剑指offer:第一个只出现一次的字符
题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
# -*- coding: utf-8 -*-# @Time : 2019-07-12 9:40# @Author : Jayce Wong# @ProjectName : job# @FileName : firstNotRepeatingChar.py# @Blog : https://blog.51cto.com/jayce1111# @Github : https://github.com/SysuJaycefrom collections import defaultdictclass Solution: """ 由于这道题目和次数有关,因此有两种解法。 解法1: 遍历字符串,对于当前字符,遍历后面的所有字符,如果出现了相同的字符,那么说明这个字符出现次数>1 这种解法的时间复杂度为O(n^2) 解法2: 维护一个哈希表,用于保存每个字符出现的次数。这样,通过两轮遍历,第一轮统计每个字符的出现次数, 第二轮查询每个字符的出现次数,如果次数为1那么就返回该字符的下标。 这种解法的时间复杂度为O(n) """ def FirstNotRepeatingChar(self, s): if not s: return -1 # 在python中,我们可以利用默认字典来简化代码 char_count = defaultdict(int) for c in s: char_count[c] += 1 for i in range(len(s)): if char_count[s[i]] == 1: return i
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。