码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-15 23:08:43      阅读:155      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!