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

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

原题:

力扣

java代码:(使用数组模拟堆栈占用空间更少,执行更快)

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户

class Solution {
    public boolean isValid(String s) {
      char[] stack = new char[s.length()];
        int p = -1;
        char[] arr = s.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            switch (arr[i]) {
                case '(':
                case '{':
                case '[':
                    stack[++p] = arr[i];
                    break;
                case ')':
                    if (p >= 0 && stack[p] == '(') {
                        p--;
                    } else {
                        return false;
                    }
                    break;
                case '}':
                    if (p >= 0 && stack[p] == '{') {
                        p--;
                    } else {
                        return false;
                    }
                    break;
                case ']':
                    if (p >= 0 && stack[p] == '[') {
                        p--;
                    } else {
                        return false;
                    }
                    break;
            }
        }
        return p < 0;
    }
}

你可能感兴趣的:(leetcode,算法,职场和发展)