LeetCode精选代码集

242. 有效的字母异位词

我一开始的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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. 有效的括号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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精选代码集
https://www.chuckfang.com/2020/06/30/MyLeetCodeCollection/
作者
方程
发布于
2020年6月30日
许可协议