題目:給一個字符串"abadfawefwfasf",找出第一個只出現一次的字符。
分析:自從看過計數排序之後,發現很多題目都是針對計數排序的擴展。字符只有256個,好處,就是我們能有一個固定的空間大小的一個數組來統計每個字符出現的次數,只需要n的時間,然後再從頭到尾遍歷一遍即可。
代碼:
void findFirstOne(char *str){
if (str==NULL)
{
return;
}
int len = strlen(str);
int temp[256];
memset(temp,0,sizeof(temp));
for (int i=0;i<len;i++)
{
temp[str[i]]= temp[str[i]]+1;
}
for (int i=0;i<len;i++)
{
if (temp[str[i]]==1)
{
cout<<str[i]<<endl;
break;
}
}
}