【剑指offer】50 - 第一个只出现一次的字符
程序员文章站
2022-07-10 13:28:06
...
题目描述
- 题目:字符串中第一个只出现一次的字符。
- 输入描述:输入一个非空字符串,例如“abcaccdeff”
- 输出描述:输出第一个只出现一次的字符,例如上例输出为‘b’,如果不存在则输出-1
解题思路
- 对于此题,我们最直观的思路就是:从头到尾扫描字符串,对每个扫描到的字符进行计数,为了保存这个计数,我们需要定义一个与字符对应的数组,然后遍历数组,找到出现次数为 1 的那个字符,输出即可
- 思路清楚后,代码写起来就很简单啦
代码实现
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
while(getline(cin, str))
{
int count[128] = {0};//保存出现次数
bool flag = false;//判断是否找到
for(int i = 0; i < str.size(); ++i)
++count[str[i]];
for(int i = 0; i < str.size(); ++i)
{
if(count[str[i]] == 1)//判断是否是第一个只出现一次的字符
{
cout << str[i] << endl;
flag = true;
break;//注意要break;
}
}
if(flag == false)//如果没有找到
cout<< "-1" <<endl;
}
return 0;
}
推荐阅读
-
在字符串中找出第一个只出现一次的字符。经典C语言例题
-
剑指offer JZ54 字符流中第一个不重复的字符 Python 多解
-
数据结构算法(第一个只出现一次的字符位置)
-
剑指 offer代码最优解析——面试题35第一个只出现一次的字符
-
【剑指offer】面试题56(1):数组中只出现一次的两个数字
-
剑指offer:数组中只出现一次的两个数字(java版)
-
剑指offer 面试题56 python版+解析:数组中只出现一次的两个数字,数组中唯一只出现一次的数字
-
剑指offer第二版-56.数组中只出现一次的两个数字
-
【算法分享】剑指offer56-数组中只出现一次的两个数字
-
剑指 Offer 56 - I. 数组中只出现一次的两个数字