找出字符串中只出现一次的字符
题目描述:
输入一个非空字符串,输出该字符串第一个只出现一次的字符。若不存在,则输出-1。
解题思路:
我们需要统计字符出现的次数,然后输出第一个只出现一次的字符。本体的关键在于如何保存每个字符出现的次数。
- 我们创建一个数组
char[256] = { 0 }
,然后利用该数组来保存字符出现的次数。 - 利用for循环来统计每个字符出现的次数。
- 再一次利用for循环输出第一个只出现一次的字符。
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
while (cin >> str) //输入字符串
{
int flag = 1; //标志位
int i = 0;
int a[256] = { 0 }; //该数组用来存储字符出现的次数
//统计字符出现的次数 注意:a[str[i]]:str[i]为字符,数组下标可以使用字符。
for (i = 0; i < str.size(); i++)
{
a[str[i]]+=1;
}
//按照次序从前往后找只出现一次的字符
for (i = 0; i < str.size(); i++)
{
if (a[str[i]] == 1)
{
cout << str[i] << endl;
flag = 0; //找到将标志位置为0
break; //直接退出循环
}
}
//若没找到输出-1
if (flag)
{
cout << -1 << endl;
}
}
return 0;
}