0
点赞
收藏
分享

微信扫一扫

有效的括号

芒果六斤半 2021-09-21 阅读 66
今日算法
题目描述:
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
思路:
  • 实例化一个栈,遍历字符串到过程中判断栈是否为空
  • 如果栈为空,则当前元素入栈
  • 不为空,则取出栈顶元素判断是否可以和当前字符元素组成合法括号”()”,”[]”,”{}”等.
  • 是:则删除栈顶元素与当前元素.继续遍历
  • 否:当前元素入栈.继续遍历.
  • 遍历结束判断栈是否为空,是则返回true,否则返回false.
代码实现:
class Solution {
    public boolean isValid(String s) {
        Stack<String> stack = new Stack();
        for (int i = 0; i < s.length(); i++) {
           if (stack.isEmpty()) {
               stack.push(s.charAt(i) + "");
           } else {
               String peekStr = stack.peek();
               String charStr = s.charAt(i) + "";
               if (isOk(peekStr, charStr)) {
                   stack.pop();
               } else {
                   stack.push(charStr);
               }
           }
        }
         return stack.isEmpty();
    }

    public boolean isOk(String a, String b) {
        return "()".equals(a + b) || "[]".equals(a + b) || "{}".equals(a + b);
    }
}
举报

相关推荐

0 条评论