📌  相关文章
📜  教资会网络 | UGC NET CS 2018 年 7 月 – II |问题2(1)

📅  最后修改于: 2023-12-03 15:26:05.228000             🧑  作者: Mango

UGC NET CS 2018 年 7 月 – II |问题2

这是一道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)$。