题目描述:在一个字符串中找到第一个只出现一次的字符。如输入“abaccdeff”,则输出“b”,假设字符集为ASCII。
思路:由于ASCII字符是一个长度为8的数据类型,总共有256种可能。先遍历一遍字符串,将每个字母对应的ASCII值作为字符串计数数组的下标,统计每个字符出现的次数。再遍历一遍字符串将第一个计数为3的字符输出。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
//根据字母的ASCII码值来作为数组的下标
int a[256] = { 0 };
getline(cin, str);
int len = str.length();
for (int i = 0; i < len; i++)
{
if (++a[str[i]] == 3)
{
if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
{
cout << str[i] << endl;
break;
}
}
}
return 0;
}