#include <iostream>
#include <string>
#include <assert.h>
using namespace std;
struct Record
{
int index;
int count;
};
char findFirstOnlyChar(string& s)
{
Record records[26];
memset(records, 0, sizeof(Record)*26); //给数组分配动态内存。
for (int i = 0; i < s.length(); i++)
{
assert(s[i] <= 'z' && s[i] >= 'a'); //很关键,面试的时候会加分。
records[s[i]-'a'].count++;
records[s[i]-'a'].index = i;
}
int index = s.length();
for (int i = 0; i < s.length(); i++)
{
if (records[i].count == 1 && index >= records[i].index)
{
index = records[i].index;
}
}
return s[index];
}
int main()
{
string s;
cout<<"请输入字符串"<<endl;
cin>>s;
cout<<findFirstOnlyChar(s);
system("pause");
}
创建一个含有index的数据结构是必要的,网上有不少直接用int char[256]的,那样做不符合题意中第一次出现的条件。