华为机试HJ59:找出字符串中第一个只出现一次的字符

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ59:找出字符串中第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

找出字符串中第一个只出现一次的字符

输入描述:

输入几个非空字符串

输出描述:

输出第一个只出现一次的字符,如果不存在输出-1

示例:

输入:

asdfasdfo
aabb

输出:

o
-1

解题思路:

本题用map存放不同字符出现的次数,m的值就是次数,key为字符。从头开始遍历字符串,第一个出现的value为1的字符,就是所要找的值。

测试代码:

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
    string str;
    while(cin>>str)
    {
        map<char,int> m;
        bool isfind=false;
        for(int i=0;i<str.size();++i)
        {
            m[str[i]]++;
        }
        for(int i=0;i<str.size();++i)
        {
            if(m[str[i]]==1)
            {
                cout<<str[i]<<endl;
                isfind=true;
                break;
            }
        }
        if(!isfind)
            cout<<-1<<endl;
    }
    return 0;
}

以上是关于华为机试HJ59:找出字符串中第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

[华为]找出字符串中第一个只出现一次的字符

剑指offer:字符流中第一个不重复的字符

找出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字母

《剑指offer》第五十题II:字符流中第一个只出现一次的字符

《剑指offer》第五十题I:字符串中第一个只出现一次的字符