20. Valid Parentheses
一、题目
1、审题
2、分析:
返回括号组成的字符串其中的括号是否都能正确闭合。
二、解答
1、分析:
方法一:
用栈实现。
左括号进栈;
右括号时栈顶出栈并判断是否匹配。最终判断栈是否为空即可。
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); int len = s.length(), index = 0; while(index < len) { char c = s.charAt(index++); if(c == '(' || c == '[' || c == '{') stack.push(c); else if(c == ')') { if(!stack.isEmpty() && stack.peek() == '(') stack.pop(); else return false; } else if(c == ']') { if(!stack.isEmpty() && stack.peek() == '[') stack.pop(); else return false; } else if(c == '}') { if(!stack.isEmpty() && stack.peek() == '{') stack.pop(); else return false; } } return stack.isEmpty(); } }
方法二:
用栈实现。
左括号时,入栈对应的右括号;
右括号时,栈顶出栈并判断是否与该右括号一致
public class Solution { 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(); } }