import java.util.*;
public class Solution {
public boolean isValid (String s) {
if(s.length()==1){
return false;
}
if(s.length()==0){
return true;
}
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();++i){
switch(s.charAt(i)){
case ')':
if(stack.isEmpty()|| stack.pop()!='('){return false;}
break;
case ']':
if(stack.isEmpty()|| stack.pop()!='['){return false;}
break;
case '}':
if(stack.isEmpty()|| stack.pop()!='{'){return false;}
break;
case '(':
case '[':
case '{':
stack.push(s.charAt(i));
break;
}
}
if(stack.isEmpty()){
return true;
}else{
return false;
}
}
}
方法:栈
利用栈的特性先进后出,遍历字符串,当遇到左括号则进栈,右括号则出栈判断是否为对应的左括号。注意防止左右括号数量不对等的情况,如都是左括号的情况,所以最后应该判断栈是否为空。


京公网安备 11010502036488号