您的位置:首页 > 编程语言

1.判断一个字符串中的字符是否唯一(CC150)---编程笔记

2014-07-23 00:53 369 查看
参考http://hawstein.com/posts/ctci-solutions-contents.html

<span style="font-family:Comic Sans MS;font-size:14px;">#include<iostream>
#include<string>
using namespace std;
bool IsUniuqe1(string s)
{
bool a[256];
memset(a,0,sizeof(a));
int len=s.length();
for(int i=0;i<len;i++)
{
int v=(int)s[i];
if(a[v]) return false;
a[v]=true;
}
return true;
}
bool IsUniuqe2(string s)
{
int a[8];//8*4*8=256
memset(a,0,sizeof(a));
int len=s.length();
for(int i=0;i<len;i++)
{
int v=(int)s[i];
int id=v/32;
int shift=v%32;
if(a[id]&&(1<<shift))
return false;
a[id]=a[id]|(1<<shift);
}
return true;
}
bool IsUniuqe3(string s)//如果只有26个字母,则一个整形就可以放下(4*8=32>26)
{
int check=0;
int len=s.length();
for(int i=0;i<len;i++)
{
int v=(int)(s[i]-'a');
if(check&(1<<v)) return false;
check|=(1<<v);
}
return true;
}
int main( )
{
string s("whagontt");
cout<<IsUniuqe3(s)<<endl;
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: