请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
不错的解法:
bool checkDifferent(string iniString){
const char* s = iniString.data();
char arr[256] = {0};
while(*s){
arr[*s] += 1;
if(arr[*s] >= 2){
return false;
}
s++;
}
return true;
}
完美的解法:
bool checkDifferent(string iniString) {
sort(iniString.begin(),iniString.end());
if(unique(iniString.begin(),iniString.end()) == iniString.end()){
return true;
}else{
return false;
}
}