题目要求:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.括号必须以正确的顺序闭合。
思路分析:
用栈来处理该问题,字符串中字符如果是'(','{','['就对其进行入栈操作,再对后面的字符进行匹配。
如果是对应的')','}',']'就对之前入栈的对应括号进行出栈操作。
最后对栈进行判断是否为空的操作,空则字符串为有效字符串。
class Solution {
public boolean isValid(String s) {
if(s.length()%2!=0){
return false;
}
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 char_top = stack.pop();
if(c == ')' && char_top != '('){
return false;
}
if(c == ']' && char_top != '['){
return false;
}
if(c == '}' && char_top != '{'){
return false;
}
}
}
return stack.isEmpty();
}
}
其中isEmpty()方法测试栈是否为空。
push()、pop()分别为入栈,出栈方法。