Valid Parentheses
题意:判断所给括号序列是否合理。
解法:
O(N):遇到左括号直接入栈,遇到右括号讲栈顶元素pop出来,若栈空或者pop出来的左括号不匹配,返回false。最后序列结束后,若栈空则合理,否则不合理。
import java.util.Stack;
public class Solution132 {
public boolean isValid(String s) {
if (s==null||s.length()==0){
return true;
}
if (s.length() % 2==1){
return false;
}
Stack<Character> stack=new Stack<Character>();
for (int i=0;i<s.length();i++){
char c=s.charAt(i);
if(c=='('||c=='{'||c=='['){
stack.push(c);
}else{
if(stack.size()==0){
returnfalse;
}
charc2=stack.pop();
if(!((c=='}'&&c2=='{')||(c==')'&&c2=='(')||(c==']'&&c2=='['))){
returnfalse;
}
}
}
if (stack.size()>0){
return false;
}
return true;
}
}