算法探索_有效的括号

问题描述:

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

有效字符串需满足:

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

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false
示例 4:

输入:s = "([)]"
输出:false
示例 5:

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

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses

解决思路:

入栈出栈核销,新建一个List作为栈,括号头入栈,括号尾出栈。

特殊判断:

字符串长度是否为偶数,由于不包含空格和其他字符,所以奇数长度的字符串是绝对不合格的。

    /*
     *作者:赵星海
     *时间:2021/6/7 14:04
     *用途:有效的括号
     */
    public boolean isValid(String s) {
        if (s.length() % 2 != 0) {
            return false;
        }
        //入栈出栈的思想来看这个需求,就比较简单了。
        char[] chars = s.toCharArray();
        ArrayList<Character> list = new ArrayList<Character>();
        for (char aChar : chars) {
            if (aChar == '(' || aChar == '{' || aChar == '[') {
                //如果是括号头,则入栈
                list.add(aChar);
            } else {
                if (list.size() == 0) return false;
                //如果是括号尾,则先对比,后出栈
                switch (aChar) {
                    case ')':
                        if (list.get(list.size() - 1) == '(') {
                            list.remove(list.size() - 1);
                        } else {
                            return false;
                        }
                        break;
                    case '}':
                        if (list.get(list.size() - 1) == '{') {
                            list.remove(list.size() - 1);
                        } else {
                            return false;
                        }
                        break;
                    case ']':
                        if (list.get(list.size() - 1) == '[') {
                            list.remove(list.size() - 1);
                        } else {
                            return false;
                        }
                        break;

                }
            }

        }
        return list.size() == 0;
    }

leetCode提交结果:

 

Guess you like

Origin blog.csdn.net/qq_39731011/article/details/117664063