LeetCode OJ 20 Valid Parentheses [Easy]

xiaoxiao2021-02-28  81

LeetCode OJ 20 Valid Parentheses

题目描述:

Given a string containing just thecharacters '(', ')', '{', '}', '[' and ']', determine if the input string isvalid.

The brackets must close in the correctorder, "()" and "()[]{}" are all valid but "(]"and "([)]" are not.

题目理解:

给定一个带有'(', ')', '{', '}', '[' ']'的字符串,判断这些括号是否合法

题目分析:

括号是配对的,且是右括号匹配最近出现的左括号,先进后出模式,容易想到用栈来实现

我的解答:

public static boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (char c : s.toCharArray()) { if (c == '(') stack.push('('); else if (c == '{') stack.push('{'); else if (c == '[') stack.push('['); else if (c == ')') { if (stack.isEmpty() || stack.pop() != '(') return false; } else if (c == '}') { if (stack.isEmpty() || stack.pop() != '{') return false; } else if (c == ']') { if (stack.isEmpty() || stack.pop() != '[') return false; } } if (stack.isEmpty()) return true; else return false; }

更简洁的解答:

public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (char c : s.toCharArray()) { if (c == '(') stack.push(')'); else if (c == '{') stack.push('}'); else if (c == '[') stack.push(']'); else if (stack.isEmpty() || stack.pop() != c) return false; } return stack.isEmpty(); }

 

转载请注明原文地址: https://www.6miu.com/read-84790.html

最新回复(0)