题目:给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
思路:用一个int做位运算,一个int4个字节32位,一共26个字母绰绰有余。
代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool checkDifferent(string iniString)
{
//ascii字符集只有256个字符
if(iniString.size() > 256)
return false;
int loop = 0;
int len = iniString.size();
for(int i=0;i<len;++i)
{
int val = 1 << (iniString[i] - 'a');
if((loop & val) > 0)
return false;
loop |= val;
}
return true;
}
int main()
{
cout << checkDifferent("aeiou") << endl;
cout << checkDifferent("barackobama") << endl;
return 0;
}