实现一个算法,确定一个字符串 s 的所有字符是否全都不同
解题思路
可以利用一个int mark = 0
各个位来保存26个字母的"是否存在"情况
遍历字符串, 取出每个字符, 跟'a'比较算出差值
将 1 位运算左移"上述差值"位得到tmp
将tmp和最上面的mark
与运算, 如果等于tmp则说明该字符已经出现过, 直接返回false
如果不等于则说明该字符还没出现, 需要记录, 将mark
与tmp做或运算
代码
class Solution {
public boolean isUnique(String astr) {
int mark = 0;
for (int i = 0; i < astr.length(); i++) {
char ch = astr.charAt(i);
int offset = ch - 'a';
int tmp = 1 << offset;
if ((mark & tmp) == tmp) {
return false;
} else {
mark |= tmp;
}
}
return true;
}
}