34.第一个只出现一次的字符
问题:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
解决:
思想:
这道理也是计数问题,同样的设置一个count字典,用来保存访问次数。然后再去依次访问原来的字符,并且查看对应字典是否为1,然后返回其位置。
这里要注意一下代码中,count_dic.get(s[i]) == None中对于没有键值的字典,要用get函数查看是否为None,不能与0比较。另外问题中有说过第一次出现的数据,我们字典有个特性特别坑,对于新来的键会放在前面,就会让我们找到错误的答案。我们需要**for j in range(n)**从原来的字符中依次访问。
python代码:
# -*- coding:utf-8 -*-
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
if (not s):
return -1
count_dic = {}
n = len(s)
for i in range(n):
# print(i)
if (count_dic.get(s[i]) == None):
count_dic[s[i]] = 1
else:
count_dic[s[i]]+= 1
for j in range(n):
if(count_dic[s[j]] == 1):
return j
return -1