免费搭建商城网站/网络广告营销典型案例
2020年11月27日,力扣,简单,有效的括号
一、题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:输入: "()"输出: true
示例 2:输入: "()[]{}"输出: true
二、解题思路
参考答题思路:
- 过滤空字符串
- 创建一个辅助栈
- 遍历,对每一个字符进行如下操作:
若为左括号,则往栈中存放右括号
若为右括号,如果 栈为空 或者 该右括号与取出的栈顶元素不一样,则返回false - 返回栈是否为空的状态
三、实现代码
实现代码如下:
public class leetcode20 {public static void main(String[] args) {String s = "(){}";System.out.println(isValid(s));}public static boolean isValid(String s) {//1.特别情况if(s.isEmpty()) return true;//2.创建辅助栈Stack<Character> stack = new Stack<>();//3.遍历for(char c : s.toCharArray()){if(c == '('){//如果有则向辅助栈中添加右括号,栈中为")"stack.push(')');}else if(c == '['){stack.push(']');}else if(c == '{'){stack.push('}');}else if(stack.isEmpty() || c != stack.pop()){return false;}}//4.返回return stack.isEmpty();}
}