每日手撕一道算法题-20. 有效的括号

时间:2022-07-23
本文章向大家介绍每日手撕一道算法题-20. 有效的括号,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

20. 有效的括号

难度简单1760

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

解析:

分析可得,有效的括号都是对称的。

从左向右遍历,如果是左括号,就把对应右括号压入栈中。

碰到右括号。就检查不为空,弹出栈顶与之相同。否则直接return false。

最后遍历完,栈为空,则满足。

public class Solution {
    public boolean isValid(String s) {
		Stack<Character> stack = new Stack<>();
        for (char c: s.toCharArray())
        switch (c) {
            case '(':   stack.push(')'); break;
            case '[':	stack.push(']'); break;
            case '{':	stack.push('}'); break;
            default:	if (stack.isEmpty() || stack.pop() != c) return false;
        }
        return stack.isEmpty();
    }
}