题目
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.
这道题比较经典了,就是有点像编译器判断代码符号是否符合规则,是堆栈的一个简单应用。当遇到"{","[","("的时候入栈,如果遇到这些符号的另一半,则取栈顶比较,如果是一对就继续,不然返回false。
代码
public class Solution {
public boolean isValid(String s) {
if(s.length()==0) return true;
int len=s.length();
char[] symbolFirst={'(','{','['};
char[] symbolSecond={')','}',']'};
char strChar[]=s.toCharArray();
Stack sym=new Stack();
for(int i=0;i<len;i++){
for(int j=0;j<symbolFirst.length;j++){
if(strChar[i]==symbolFirst[j]){
if(len==1){
return false;
}
sym.push(strChar[i]);
}
}
for(int k=0;k<symbolSecond.length;k++){
if(strChar[i]==symbolSecond[k]){
if(sym.isEmpty()){
return false;
}
else{
if(!sym.peek().equals(symbolFirst[k])){
return false;
}
else{
sym.pop();
}
}
}}}
if(sym.isEmpty())
{
return true;
}
else{
return false;
}
}
}
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/