题目:有效的括号

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

有效字符串需满足:

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

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

public boolean isValid(String s) {
    Stack<Character> stack = new Stack<Character>();
    for (int i = 0; i < s.length(); ++ i) {
        switch (s.charAt(i)) {
            case ')':
                if (stack.isEmpty() || !stack.pop().equals('('))
                    return false;
                break;
            case ']':
                if (stack.isEmpty() || !stack.pop().equals('['))
                    return false;
                break;
            case '}':
                if (stack.isEmpty() || !stack.pop().equals('{'))
                    return false;
                break;
                default:
                    stack.push(s.charAt(i));
                    break;
        }
    }
    return stack.isEmpty();
}

思路:

这是一道典型的可以用栈来解决的问题,类似的问题有 表达式求解等。

做一个空栈,一个个读入字符直到字符串结尾;

如果字符是一个开放符号(‘(’’[’’{’),则将其推入栈中。

如果字符是一个封闭符号(‘)’’]’’}’),则

当栈空时放回false;当栈不为空时,元素弹出,如果弹出的符号不是对应的开放符号,则返回false

全部遍历完毕后,如果栈为空则返回true,栈非空则返回false

Leetcode-20 有效的括号(ValidParentheses)-java

相关文章:

  • 2021-05-29
  • 2021-07-07
  • 2021-09-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-04-04
  • 2021-07-03
  • 2022-01-06
  • 2021-11-22
  • 2021-07-03
  • 2021-06-24
  • 2021-09-25
相关资源
相似解决方案