题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
/*************************************************************************
> Created Time: Tue 10 May 2016 12:17:48 PM PKT
************************************************************************/
#include<iostream>
using namespace std;
char FirstNotRepeatChar(char* str)
{
if(str==NULL){
return '\0'; //注意一定是\0
}
int hash[256]; //重点,需要初始化,依赖系统初始化不可靠
for(int i=0;i<256;i++){
hash[i]=0;
}
char* c=str;
while(*c!='\0'){
hash[*c]++;
c++;
}
c=str;
while(*c!='\0'){
if(hash[*c]==1){
return *c;
}
c++;
}
return '\0';
}
//测试
void test()
{
char* str="abaccdeff";
char c=FirstNotRepeatChar(str);
cout<<c<<endl;
}
①判断多个字符是不是在某个字符串里出现过②统计多个字符在某个字符串中出现的次数
可以考虑基于数组创建一个简单的哈希表。
相关题目见《剑指offer》