一、算法描述
给定一个字符串,找出字符串中第一个只在整个字符串中出现一次的字符。
二、算法思路
此题比较简单,常规方法如直接遍历整个字符串,从第一个字符开始,逐一和后续字符比较,看是否在字符串出现,第二种方法是根据字符ascii特性,借助辅助数组,类似于hash数组,以字符的ascii为下标,以字符出现的次数为hash元素值,先统计出各个字符出现的次数,然后再遍历整个字符串,判断其在hash中出现的次数是否为1,为1则表示第一次出现,直接输出即可
三、算法代码
此处只给出第二种方法的代码
#include <iostream> #include <cstring> using namespace std; //hash method, two loop, o(n) void find_char(char *s, int n) { int *pc = new int[256]; memset(pc,0,sizeof(int)*256); int i=0; for(i=0;i<n;++i) pc[s[i]]++; for(i=0;i<n;++i) { if(pc[s[i]]==1) { cout<<s[i]<<endl; break; } } } int main() { char src[256]="abacbcdeff"; find_char(src,strlen(src)); return 0; }