题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
思路:
使用栈,首先将字符串转为字符数组,将 ( [ { 类字符存入栈中 ,然后将其出栈与下一个字符进行比较,如果匹配则正确。否则错误
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
char [] chars = s.toCharArray();
for (char ch : chars){
if ( ch=='(' || ch=='[' || ch=='{'){
stack.push(ch);
}else {
if (stack.isEmpty()){
return false ;
}
char left = stack.pop();
if ( left=='(' && ch==')'){
}else if (left=='[' && ch == ']'){
}else if (left=='{' && ch =='}'){
}else {
return false;
}
}
}
return stack.isEmpty();
}
}