1.题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
2.示例:
输入:{}[]()
输出:true
输入: "([)]"
输出: false
3.思路:可以采用栈来解决,
第一步:判断栈是否空,为空则进一个括号,若不为空,则判断当前括号和栈顶元素是否匹配,不匹配则当前括号入栈;匹 配则当前括号不入栈,栈顶元素弹栈。
第二步:判断括号是否匹配(可以用ASCLL码,'('-')'=-1 , '{'-'}'=-2 , '['-']'=-2)。
第三步:判断栈是否为空,为空则括号匹配,不为空则括号不匹配。
4.代码如下:
class Solution {
public boolean isValid(String s) {
Stack<Character> stack =new Stack();
for(int i=0;i<s.length();i++){
if(stack.empty()){
stack.push(s.charAt(i)); //入栈
}else{
//括号是否匹配
if((stack.peek()-s.charAt(i))==-1 || (stack.peek()-s.charAt(i))==-2){
stack.pop(); //弹栈
}else{
stack.push(s.charAt(i)); //入栈
}
}
}
if(stack.empty()){
return true;
}
return false;
}
}