zerofly's Blog

努力不一定成功,但不努力一定不会成功

0%

第一个只出现一次的字符


题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1(需要区分大小写)。(从0开始计数)

解题思路

通过创建一个HashMap来辅助每个字符的计数。第一遍遍历得到每个字母出现的次数,第二遍遍历,找出次数为 1 的第一个字母,并返回下标。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution
{
public:
int FirstNotRepeatingChar(string str)
{
if (str.size() == 0)
return -1;

map<char, int> item; // 键表示字母,值表示出现的次数
// 第一次遍历得到每个字母出现的次数
for (int i = 0; i < str.length(); i++)
item[str[i]]++;
// 第二次遍历找到第一个出现次数为1的字母下标
for (int i = 0; i < str.length(); i++)
{
if (item[str[i]] == 1)
return i;
}
return -1;
}
};

参考博文链接:https://cuijiahua.com/blog/2018/01/basis_34.html

文章作者:zerofly

发布时间:2020年05月28日 - 22:05

原始链接:http://zeroflycui.github.io/50f3eaff.html

许可协议: 转载请保留原文链接及作者。