题目描述:
image.png
示例:
image.png
解题思路:
用栈

解:

public boolean isValid(String s) {

if(s.length()==0){//空串认为是有效的

return true;

}

Stack stack=new Stack<>();//建一个字符型的栈

for(char ch:s.toCharArray()){//将字符串转为一个字符数组,并遍历

if(ch==’(‘ || ch==’[‘ || ch==’{‘){//如果是左括号就疯狂入栈

stack.push(ch);

}else{//如果是右括号进行下面的操作

if(stack.isEmpty()){//如果栈为空,说明没有跟当前右括号配对的,即右括号多,返回false

return false;

}else{//栈不空,则栈顶元素出栈(pop)跟当前右括号配对

char temp=stack.pop();

if(ch==’)’){

if(temp!=’(‘){

return false;

}

}else if(ch==’]’){

if(temp!=’[‘){

return false;

}

}else if(ch==’}’){

if(temp!=’{‘){

return false;

}

}

}

}

}

return stack.isEmpty()?true:false;//如果栈为空,说明配对成功,不为空,说明左括号多

}