牛客华为题库——C++实现【找出字符串中第一个只出现一次的字符】

这篇博客介绍了如何利用C++和map容器解决寻找字符串中第一个只出现一次的字符的问题。代码示例展示了通过遍历字符串并使用map统计每个字符出现次数,然后遍历map找到第一个出现次数为1的字符。如果不存在这样的字符,则输出-1。博客还提到了map容器的特性以及与vector容器的区别。
摘要由CSDN通过智能技术生成

牛客网刷题:找出字符串中第一个只出现一次的字符

找到第一个只出现一次的字符,那就需要统计每种字符个数了,考虑使用map容器,但需要注意map容器默认是升序的。

话不多说,直接开始题目:

描述

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

数据范围:输入的字符串长度满足 1≤n≤1000

输入描述:

输入一个非空字符串

输出描述:

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

示例1

输入:

asdfasdfo

输出:o

 

#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
    string str;
    cin >>str;
    
    map<char,int> mapstr;
    for(size_t i = 0; i < str.size();i++)
    {
        mapstr[str[i]]++;
    }
    bool find = false;
    for(size_t i = 0; i < str.size();i++)
    {
        if(mapstr[str[i]] == 1)
        {
            find = true;
            cout<<str[i]<<endl;
            break;
        }
    }

    if(!find)
        cout<<"-1"<<endl;
    
    return 0;
}

 喜欢使用map容器是因为map容器[]操作会自动检测是否有该元素,没有则添加该元素,vector容器如果没有该元素,是不能使用[]的,否则会引起崩溃,所以在使用vector容器[]时候需要先判断是否存在否则不使用[]或者先resize分配大小等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值