【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
/************************************************************************/ /* 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b 如果从头遍历,与后面字符进行比较出现次数是否为1,算法复杂度为O(n^2), 考虑以空间换时间,因为一个字符占8位。因此可用一个256位数组保存每个字符出现的次数 */ /************************************************************************/ #include <iostream> #include <string> using namespace std; void FindChar(string &s) { int str[256]; for (int i=0;i<256;i++) { str[i]=0; } for (int i=0;i<s.size();i++) { str[s[i]]++; } for (int i=0;i<s.size();i++)//多谢justinzhang指出,第二次遍历时应从s中开始 { if (str[s[i]]==1) { printf("%c",s[i]); return; } } } int main() { string s; cout<<"请输入字符串"<<endl; cin>>s; FindChar(s); //cout<<FirstNotRepeatingChar(const_cast<char *>(s.c_str())); cout<<endl; system("pause"); return 0; }