题目:
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.
主要用一个堆结构专门存放左括号,如果是右括号,则进行一系列的操作。
java代码:
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();i++){
if(s.charAt(i)==')'||s.charAt(i)==']'||s.charAt(i)=='}'){
if(stack.empty()){
return false;
}
char c = stack.pop();
if((c=='('&&s.charAt(i)!=')')||(c=='['&&s.charAt(i)!=']')||(c=='{'&&s.charAt(i)!='}')){
return false;
}
}else{
stack.push(s.charAt(i));
}
}
if(stack.empty()){
return true;
}
return false;
}