20. 有效的括号(栈)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解法:
遍历整个字符串,遇到左括号先入栈,遇到右括号则退栈匹配,此时若栈空或不匹配则返回false。遍历完成后栈空则返回true。
class Solution {
public boolean isValid(String s) {
if(s.length()==1) return false;
char[] stack = new char[10001];
char[] words = s.toCharArray();
int top = 0;
for(int i = 0; i < words.length; ++i){
char word = words[i];
switch(word){
case '(': stack[top++] = '(';break; //左括号入栈
case '[': stack[top++] = '[';break;
case '{': stack[top++] = '{';break;
case ')': if(--top <0 || stack[top]!='(')return false;break; //栈空或括号不匹配
case ']': if(--top <0 || stack[top]!='[')return false;break;
case '}': if(--top <0 || stack[top]!='{')return false;break;
}
}
if(top<=0)
return true;
return false;
}
}