面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
代码
public boolean isUnique(String astr) {
if(astr.length()<2)
return true;
int n=0;
for(int i=0;i<astr.length();++i){
if(((1<<(astr.charAt(i)-'a'))&n)!=0){
return false;
}
n|=(1<<(astr.charAt(i)-'a'));
}
return true;
}
我们用一个int n来做一个哈希表
通过 astr.charAt(i)-‘a’ 我们确定了是哪个字母 从而使n的那个位为1 表示已经访问过
遍历时先判断那个位是否为1 我们可以通过&运算来判断两个数之间是否出现位数同为1的 如果不为0 说明那个数在之前就已经出现过了 不唯一