应某位博友的提问,本博文为解析博文,多谢支持
题目如下:
实现一个算法确定字符串中的字符是否均唯一出现,如果不使用额外的存储空间,你的算法该如何改变?
样例
给出"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;
}
转载请注明原文地址: https://ju.6miu.com/read-1298837.html