Miscellaneous | 不适用额外空间判断字符是否唯一

应某位博友的提问,本博文为解析博文,多谢支持
题目如下:
实现一个算法确定字符串中的字符是否均唯一出现,如果不使用额外的存储空间,你的算法该如何改变?

样例

给出"abc",返回 true

给出"aab",返回 false


解题思路:
这题目使用标记来解题是最优解,只是不允许申请额外空间,本人以往博文中也有一个惯用的伎俩,用位标记“Miscellaneous | 判断两个字符串是变位词”。然而对付这题,这伎俩也就能满足解题了。一个int变量能概括标记26个字母所用的位了,其他字符自己适当用其它的类型即可。其余就是位运算的事了。

思路代码实现如下:
int Method(vector &c)
{
    int i=0;
    for(char x:c)
    {
        if(i&1<<(x-'a'))
            return 0;
        i|=1<<(x-'a');
    }
    return 1;
}


你可能感兴趣的:(Miscellaneous)