242. 有效的字母异位词

我一开始的代码

   public static boolean isAnagram(String s, String t) {
        char[] c1 = s.toCharArray();
        char[] c2 = t.toCharArray();

        if(c1.length != c2.length) {
            return false;
        }

        int[] m1 = new int[128];
        int[] m2 = new int[128];

        for(int i = 0; i < c1.length; ++i) {
            m1[c1[i]]++;
            m2[c2[i]]++;
        }

        for(char c : c1) {
           if(m1[c] != m2[c]){
               return false;
           }
        }

        return true;
    }

上面👆这个方法是用了数组作为一个特殊的哈希表来实现的。

20. 有效的括号

public boolean isValid(String s) {
        char[] cs = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        for(char c : cs) {
            if(c == '(') {
                stack.push(')');
            } else if(c == '[') {
                stack.push(']');
            } else if(c == '{') {
                stack.push('}');
            } else {
                // 这个判断条件容易遗漏stack.empty(),
                // 当上面三个条件都不符合,且栈为空时也返回为false
                if(stack.empty() || stack.pop() != c) {
                    return false;
                } 
            }
        }
        return stack.isEmpty();
    }


技术分享      LeetCode

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!