数组与字符串,判断字符串各个字符是否不同

#include<string>using namespace std;bool isUniqueChars2(string str){if (str.length() > 256) return false;bool *char_set = new bool[256];memset(char_set, 0, sizeof(bool) * 256);for (int i = 0; i < str.length(); i++){int val = str[i];if (char_set[val])//这个字符已经在字符串中出现过{return false;}char_set[val] = true;}return true;}

这段代码的时间复杂度为O(n),其中n为字符串长度,空间复杂度为O(1).

使用位向量,可以将空间占用减少为原先的1/8.下面的代码假设字符串只含有小写字母a到z.这样一来,,我们只需使用一个int型变量。

#include<string>using namespace std;bool isUniqueChars(string str){if (str.length > 26) return false;int checker = 0;for (int i = 0; i < str.length(); i++){int val = str[i] – ‘a’;if ((checker& (1 << val)) > 0){return false;}checker |= (1 << val);}return true;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可以用爱得到全世界,你也可以用恨失去全世界

数组与字符串,判断字符串各个字符是否不同

相关文章:

你感兴趣的文章:

标签云: