📅  最后修改于: 2023-12-03 15:26:05.228000             🧑  作者: Mango
这是一道UGC NET CS 2018 年 7 月 – II的题目,测试IT程序员的算法和数据结构能力。
给定一个字符串,找到该字符串中第一个不重复的字符,并返回其下标。如果不存在,则返回 -1。
字符串中的字符仅包含小写字母。
例如:
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
我们可以先统计字符串中各个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为 1 的字符的下标。
class Solution:
def firstUniqChar(self, s: str) -> int:
freq = [0] * 26
for c in s:
freq[ord(c) - ord('a')] += 1
for i in range(len(s)):
if freq[ord(s[i]) - ord('a')] == 1:
return i
return -1
本题考查了程序员的数据处理能力和代码实现能力,通过题目的解决方案,我们可以发现,实际上要求的是一个不重复的字符,那么我们可以先基于频率统计可以参考字符ASCII码转化,然后在遍历一次字符串,时间复杂度为 $O(n)$,空间复杂度为 $O(1)$。