题意:
给定一个仅包含字符’(’、’)’、’’、’’、’[‘和’]'的字符串,确定输入字符串是否有效。
括号必须以正确的顺序关闭,“()”和“()[]”均有效,但“(]”和“([)]”无效。
题解:
[ ( { [ ] ( ) } ) ] ( )
这样是正确的
可以左括号进栈,右括号出栈,出栈时看看跟右括号符不符合,还有字符是右括号但是栈已经为空的情况,以及字符串遍历完后栈中还有剩余的情况也是false
import java.util.*;
public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(char c:s.toCharArray()){
if(c=='(' || c=='{' || c=='['){
stack.push(c);
}
else if(stack.isEmpty()) return false;
else if(c=='}'){
if(stack.pop()!= '{') return false;
}
else if(c==')'){
if(stack.pop()!= '(') return false;
}
else if(c==']'){
if(stack.pop()!= '[') return false;
}
}
if(!stack.isEmpty()) return false;
return true;
}
}