面试题 01.01. 判定字符是否唯一
方法1:哈希表
方法2:位运算
ASCII码一共128个,long型数值位长64,用两个long变量,0代表当前字符未出现,1表示出现过
class Solution {
public boolean isUnique(String astr) {
//方法1
// HashSet<Character> set = new HashSet<>();
// for(char c : astr.toCharArray()){
// set.add(c);
// }
// return set.size() == astr.length();
//方法2
long high64 = 0;
long low64 = 0;
for(char c : astr.toCharArray()){
if(c < 64){
long bitSite = 1L << c;
if((bitSite & low64) != 0) return false;
low64 |= bitSite;
}else{
long bitSite = 1L << (c - 64);
if((bitSite & high64) != 0) return false;
high64 |= bitSite;
}
}
return true;
}
}