实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)
字符串中的字符是否唯一?一拿到题很容易就能想到以HASH的方式来做。只能用基本的数据结构的要求其实很明显的也在提示我们,只要那个数组模拟成hash即可。
字符串中有26个字母。(注:若不止包含26个字母,则可以通过ASCII码确定范围,道理是一样的)
故需要的是
int HASH[26];
bool fun(char *str)
{
if(str==NULL)
return true;
memset(HASH,0,26);
int n=strlen(str);
for(int i=0;i<n;i++)
{
int tmp=str[i]-'a';
HASH[tmp]++;
}
for(int i=0;i<n;i++)
{
if(HASH[i]>1)
return false;
}
return true;
}
这段代码实为精简版,因为还没有考虑大小写的情况,但大概主要代码就是如此。