https://leetcode.com/problems/valid-parentheses/
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
这道题还是比较简单的,看到左括号就入栈,右括号出栈。出栈后对比被出栈的左括号和当前的右括号是否匹配。
注意特殊情况,即字符串匹配完了,如果栈内还有左括号,则说明有的左括号没有被匹配上,以及当前是右括号时,栈内没有了,说明这个右括号也没匹配上。
public class Solution {
public boolean isValid(String s) {
if(s==null || s.length()==0) return true;
Stack<Character> stack = new Stack<Character>();
for(int i=0; i<s.length(); i++){
if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='['){
stack.push(s.charAt(i));
}
else{
if(stack.isEmpty()) return false;
char c = stack.pop();
if(c=='(' && s.charAt(i)==')') continue;
if(c=='{' && s.charAt(i)=='}') continue;
if(c=='[' && s.charAt(i)==']') continue;
else return false;
}
}
if(stack.isEmpty()) return true;
return false;
}
}