首页 > 编程语言 > 详细

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

时间:2015-08-15 23:07:57      阅读:236      评论:0      收藏:0      [点我收藏+]

技术分享

#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;
}

技术分享


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

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

原文:http://blog.csdn.net/wangfengfan1/article/details/47685649

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!