题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/va… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路: 使用栈解决问题
1、 准备一个栈stack,用来存储字符
2、 遍历字符串 s 如果遇到 '(',往栈中压入他的右括号 ')' , 剩下的两个括号的操作和这个一样。
3、 如果在遍历的过程中遇到了 ')' 则拿这个字符和栈顶的字符进行比较,如果不相同,返回false。
4、 因为括号是成对出现的,所以如果是有效的括号,那么到最后栈一定为空。
public static boolean isValid1(String s){
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
if (s.charAt(i) == '('){
stack.add(')');
}else if (s.charAt(i) == '['){
stack.add(']');
}else if (s.charAt(i) == '{'){
stack.add('}');
}else if (stack.isEmpty() || s.charAt(i)!=stack.pop()){
return false;
}
}
return stack.isEmpty();
}