
一、前言
本系列文章为《剑指Offer》刷题笔记。
刷题平台:牛客网
书籍下载:共享资源
二、题目
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。
1、思路
建立一个哈希表,第一次扫描的时候,统计每个字符的出现次数。第二次扫描的时候,如果该字符出现的次数为1,则返回这个字符的位置。
2、代码
C++:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int length = str.size();
if(length == 0){
return -1;
}
map<char, int> item;
for(int i = 0; i < length; i++){
item[str[i]]++;
}
for(int i = 0; i < length; i++){
if(item[str[i]] == 1){
return i;
}
}
return -1;
}
};
Python:
# -*- coding:utf-8 -*-
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
length = len(s)
if length == 0:
return -1
item = {}
for i in range(length):
if s[i] not in item.keys():
item展开] = 1
else:
item展开] += 1
for i in range(length):
if item展开] == 1:
return i
return -1
来源:
https://cuijiahua.com/blog/2018/01/basis_34.html
