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

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

题目描述:

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

输入描述:

输入几个非空字符串

输出描述:

输出第一个只出现一次的字符,如果不存在输出-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;
}


相关文章
|
6月前
|
索引
《华为机试》——查找两个字符串a,b中的最长公共子串
《华为机试》——查找两个字符串a,b中的最长公共子串
华为机试HJ106:字符逆序
华为机试HJ106:字符逆序
119 1
华为机试HJ1:字符串最后一个单词的长度
华为机试HJ1:字符串最后一个单词的长度
华为机试HJ65:查找两个字符串a,b中的最长公共子串
华为机试HJ65:查找两个字符串a,b中的最长公共子串
华为机试HJ46:截取字符串
华为机试HJ46:截取字符串
华为机试HJ81:字符串字符匹配
华为机试HJ81:字符串字符匹配
|
存储 容器
华为机试HJ23:删除字符串中出现次数最少的字符
华为机试HJ23:删除字符串中出现次数最少的字符
|
容器
华为机试HJ92:在字符串中找出连续最长的数字串
华为机试HJ92:在字符串中找出连续最长的数字串
|
算法 数据库
华为机试HJ71:字符串通配符
华为机试HJ71:字符串通配符