牛客网刷题:找出字符串中第一个只出现一次的字符
找到第一个只出现一次的字符,那就需要统计每种字符个数了,考虑使用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分配大小等等。