# 组合两个表
实现一个算法,确定一个字符串 s 的所有字符是否全都不同
- 示例 1:
输入: s = "leetcode" 输出: false
- 示例 2:
输入: s = "abc" 输出: true
- 限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
# mine
用set去重的原理
public static boolean isUnique(String astr) {
char[] chars = astr.toCharArray();
HashSet<Character> set = new HashSet<>();
for (char aChar : chars) {
if (!set.add(aChar)) {
return false;
}
}
return true;
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
用stream流去重方法,好像效率不太行
public static boolean isUnique1(String astr) {
long count = astr.chars().distinct().count();
return count == astr.length();
}
1
2
3
4
2
3
4
# other
采用位运算,我看起来有点吃力。。。
public static boolean isUnique2(String astr) {
int aa = 0;
int cc = 1;
for (int i = 0; i < astr.length(); i++) {
char t = astr.charAt(i);
int offset = t - 'a';
int bb = cc << offset;
if ((aa & bb) != 0) {
return false;
}
aa |= bb;
}
return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14