该题目可以用栈解决,先遍历字符串,将字符串中的所有左括号压栈,然后取出栈顶元素,与剩余的元素进行配对,
若全部配对成功,返回true,否则返回false。以下为代码。
class Solution {
public boolean isValid(String s) {
int len = s.length();
Stack<Character> stack = new Stack<Character>();
if((len%2) != 0)
{
return false;
}else{
for(int i = 0;i < len;i++){
if((s.charAt(i)=='(')||(s.charAt(i)=='[')||(s.charAt(i)=='{')){
stack.push(s.charAt(i));
}else{
if(stack.isEmpty()){
return false;
}
if(s.charAt(i)==')'){
if(stack.peek()!='(')
{
return false;
}else{
stack.pop();
}
}else if(s.charAt(i)==']'){
if(stack.peek()!='[')
{
return false;
}else{
stack.pop();
}
}else{
if(stack.peek()!='{')
{
return false;
}else{
stack.pop();
}
}
}
}
}
if(!stack.isEmpty()){
return false;
}else{
return true;
}
}
}