考察:字符串
方法1:常规方法:根据相同字符个数为1的字符所在位置
方法2:使用哈希表存储频数.
可以对字符串进行两次遍历。在第一次遍历时,我们使用哈希映射统计出字符串中每个字符出现的次数。在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回该字符,否则在遍历结束后返回空格。
方法3:首先考虑用Hashmap这样的数据结构来把所有出现过的字符和他们对应的出现次数记录下来。接着,因为我们需要找到第一个只出现一次的字符,所以我们还需要把整个输入的字符串再遍历一遍,然后遍历时我们检测当前字符的出现次数在我们的hashmap里是不是1,如果我们一旦遇到符合条件的字符,直接返回他的位置,因为我们只要第一个符合条件的字符。所以这题分两步:
# -*- coding:utf-8 -*- class Solution: def FirstNotRepeatingChar(self, s): # write code here # if not s: return -1 for i in range(len(s)): if s.count(s[i]) == 1: return i return -1
class Solution: def firstUniqChar(self, s: str) -> str: count = collections.Counter(s) for i, ch in enumerate(s): if count[ch] == 1: return ch return ' ' # 时间复杂度:O(n)O(n),其中 nn 是字符串 ss 的长度。我们需要进行两次遍历。