题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
思路:
使用栈进行合适配对的匹配!
挨个对比栈顶的元素。
记得出现不匹配的元素时,直接返回false;可以大大减少判断的次数,降低时间!
代码:
1)使用栈进行 合适 配对的匹配
class Solution {
public boolean isValid(String s) {
char[] ch = s.toCharArray();//字符串转换为字符数组
Stack<Character> stack = new Stack<>();//进行操作的栈
//挨个入栈!遍历字符数组
for(int i = 0;i < s.length();i++){
if(ch[i] == '(' || ch[i] == '{' || ch[i] == '[') stack.push(ch[i]);
else if(!stack.isEmpty()){
if(ch[i] == ')' && stack.peek() == '(') stack.pop();
else if(ch[i] == '}' && stack.peek() == '{') stack.pop();
else if(ch[i] == ']' && stack.peek() == '[') stack.pop();
else return false;
}
else return false;
}
return stack.isEmpty();
}
}