欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【剑指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++ 字符串