面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s
的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
题解
判断是否唯一考虑用Set 或 Map
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
class Solution {
public boolean isUnique(String astr) {
HashSet<Character> set = new HashSet<>();
for(int i = 0;i < astr.length(); i++){
if(!set.add(astr.charAt(i)))
return false;
}
return true;
}
}
位运算
不考虑用额外空间
class Solution {
public boolean isUnique(String astr) {
int mark = 0;
int move = 0;
for (int i = 0; i < astr.length(); i++) {
move = astr.charAt(i) - 'a';
// &运算 --> 判断当前偏移量是否出现过
if ((mark & (1 << move)) != 0) {
return false;
}else {
// |= 运算 --> 将偏移量赋值给mark
mark |= (1 << move);
}
}
return true;
}
}