判定字符是否唯一

题目:实现一个算法,确定一个字符串 s 的所有字符是否全都不同,不要使用额外的数据结构。

思路:不使用额外的数据结构,但是显然每遍历到一个字符就要记录并检查,使用位运算是个不错的选择,通过某一位是0还是1记录,而具体的位可以通过字符与’a’的距离判断。

代码:

class Solution {
public:
    bool isUnique(string astr) {
        int len=astr.length(),flag=0,gap;
        for(int i=0;i<len;i++){
            gap=astr[i]-'a';
            if(flag&(1<<gap))return false;
            flag|=(1<<gap);
        }
        return true;
    }
};