面试题 01.01. 判定字符是否唯一

Bit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public boolean isUnique(String astr) {
if (astr.length() > 26) {
return false;
}

int mask = 0;
for (int i = 0; i < astr.length(); i++) {
int offset = astr.charAt(i) - 'a';
if ((mask & (1 << offset)) != 0) {
return false;
}

mask |= (1 << offset);
}

return true;
}
}

Sort

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public boolean isUnique(String astr) {
if (astr.length() > 26) {
return false;
}

char[] chars = astr.toCharArray();
Arrays.sort(chars);
for (int i = 1; i < chars.length; i++) {
if (chars[i] == chars[i - 1]) {
return false;
}
}

return true;
}
}

References

面试题 01.01. 判定字符是否唯一