您的位置:首页 > 其它

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

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

样例

给出
"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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 存储