如何在字符串里查找第一个不重复的字母,即只出现一次的最靠前的字母
#include <iostream>using namespace std;char findIt(const char *str);int main(){ char str[]="iamastudenti"; cout << findIt(str) << endl; return 0;}char findIt(const char *str){ int count[26]={0}; int index[26]={0}; //注意int数组初始化赋值时,如果写成={-1}是不能给所有元素初始化为-1的,只有第一个元素是-1,其余为默认值0 unsigned int i; int pos; for(i=0;i<strlen(str);i++) { count[str[i]-'a']++; //记录该字母出现的次数 // cout<<count[str[i]-'a']<<endl; if(index[str[i]-'a']==0) { index[str[i]-'a']=i; //记住该字母第一次出现时的索引 } } pos=strlen(str); for(i=0;i<26;i++) { if(count[i]==1) //找到只出现一次的字母 { if(index[i]!=-1&&index[i]<pos) //在只出现一次的字母中找出索引值最小的即可 { pos=index[i]; } } } if(pos<strlen(str)) return str[pos]; return '\0';}