/************************************************************************//* 在一个字符串中找到第一个只出现一次的字符。如输入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<256;i++) {
if
(str[i]==1) {
printf("%c",i);
return;
}
}
} int
main() { string s;
cout<<"请输入字符串"<<endl;
cin>>s;
FindChar(s);
cout<<endl;
return
0; }
本文介绍了一种高效的算法,用于在一串字符中找出首次且唯一出现的字符。通过使用256位数组来记录每个字符出现的次数,实现了快速查找,算法的时间复杂度降低到了O(n)。
1724

被折叠的 条评论
为什么被折叠?



