20. 有效的括号
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路:通过栈来记录最需要匹配的元素 ,栈顶元素反映了在嵌套的层次关系中,最近的需要匹配的元素.
class Solution {
public boolean isValid(String s) {
//通过栈来记录,栈顶元素为最需匹配的元素
Stack<Character> stack = new Stack();
for (int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c == '{' || c=='[' || c=='(' ){
stack.push(c);
}else{
if(stack.isEmpty()){
return false;
}
char topChar = stack.pop();
if(c=='}' && topChar!='{' ){
return false;
}
if(c==']' && topChar!='['){
return false;
}
if(c==')' && topChar!='('){
return false;
}
}
}
return stack.isEmpty(); //匹配完全后,栈内一定为空
}
}