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

来源:互联网 发布:林彪为什么叛变 知乎 编辑:程序博客网 时间:2024/05/22 10:42
应某位博友的提问,本博文为解析博文,多谢支持
题目如下:
实现一个算法确定字符串中的字符是否均唯一出现,如果不使用额外的存储空间,你的算法该如何改变?

样例

给出"abc",返回 true

给出"aab",返回 false


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

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


8 0
原创粉丝点击