描述
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列,括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
解题思路:
要判断是否是有效括号,则首先需要判断第一个与最后一个是不是关闭的括号,然后再判断第二个与倒数第二个,依次进行,因此可以使用先进后出的栈来判断
public boolean isValid (String s) {
Stack<Character> stack=new Stack();
for(char c:s.toCharArray()){
if(c=='('){
stack.push(')');
}else if(c=='['){
stack.push(']');
}else if(c=='{'){
stack.push('}');
}else if(stack.isEmpty()||stack.pop()!=c){
return false;
}
}
return stack.isEmpty();
}
当然也可以用循环来判断
public boolean isValid (String str) {
boolean result=true;
char a[]=str.toCharArray();
for (int i = 0; i < a.length/2; i++) {
char temp=str.charAt(i);
if(temp=='('){
temp=')';
}else if (temp=='['){
temp=']';
}else if (temp=='{'){
temp='}';
}else if (temp=='}'){
temp='{';
}else if (temp==']'){
temp='[';
}else if (temp==')'){
temp='(';
}
if(!(temp == str.charAt(str.length() - i - 1))){
result=false;
break;
}
}
return result;
}