Leetcode 387.字符串中的第一个唯一字符

版权声明:版权归博主所有,转载请注明 https://blog.csdn.net/qq_17808707/article/details/88130863

题目描述

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:
s = “leetcode”
返回 0.

s = “loveleetcode”,
返回 2.

注意事项:您可以假定该字符串只包含小写字母。

解题思路

引入排序字典,统计字符串中各字符出现的次数,随后遍历此字典,找到第一个计数为1的key,返回其在字符串中的下标。若没有计数为1的key,则返回-1。

代码

class Solution:
    def firstUniqChar(self, s: str) -> int:
        if s=="":
            return -1
        else:
            from collections import OrderedDict
            d=OrderedDict({key:value for key in s for value in [0]})
            for item in s:
                d[item]+=1
            ans=""
            for key,value in d.items():
                if value==1:
                    return s.find(key)
            else:
                return -1

结果

在这里插入图片描述

反思

目前执行最快的代码如下:

 letters='abcdefghijklmnopqrstuvwxyz'
        index=[s.index(l) for l in letters if s.find(l) != -1 and s.find(l) == s.rfind(l)]
        return min(index) if len(index) > 0 else -1

其思路是,针对字母表中的字母,在字符串中如果正向寻找和反向寻找的索引相同,则将其索引放入索引列表中,然后返回索引中最小的,即最靠前的。如果索引列表为空,则返回-1。

猜你喜欢

转载自blog.csdn.net/qq_17808707/article/details/88130863
今日推荐