题目描述
在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'
解决思路
最直观的方法
从头开始扫描这个字符串中的每个字符,当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符技术只出现一次的字符。
时间复杂度是O(n^2)
借助容器的方法
用一个容器来存放每个字符的出现次数,根据字符来查找它出现的次数,哈希表
定义哈希表的键值是字符,而值是该字符出现的次数。还需要从头开始扫描字符串两次。第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加1,接下来第二次扫描,每扫描到一个字符就能从哈希表中得到该字符出现的次数。这样第一个只出现一次的字符就是符合要求的输出。
# -*- coding:utf-8 -*-
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
if s == None:
return -1
num_dict = {}
for c in s:
if c in num_dict:
num_dict[c] += 1
else:
num_dict[c] = 1
for c in range(len(s)):
if num_dict[s[c]] == 1:
return c
return -1