leetcode 387. 字符串中的第一个唯一字符(python)

题目链接

题目描述:

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

案例:

s = “leetcode”
返回 0.

s = “loveleetcode”,
返回 2.

解题思路:

遍历一遍字符串,将每一个字符出现的次数与该字符放入字典中,
再次遍历字符串,找到第一个次数为1的字符返回其索引
p.s.由于字典是无序的,所以第二遍要枚举字符串而不是字典中第一个次数为1的字符

class Solution(object):
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        rr=-1
        res={}
        for i in s:
            if i in res:
                res[i]+=1
            else:
                res[i]=1
        for i in s:
            if res[i]==1:
                return s.index(i)
        return -1

在这里插入图片描述
p.s.
别人的做法
find()找到字符第一次出现的索引,rfind()找到字符最后一次出现的索引,如果这两个值相等且不等于-1说明该字符只出现一次,将所有只出现一次的字母索引放入列表中,返回其中的最小值

        alpha='qwertyuiopasdfghjklzxcvbnm'
        s=[s.find(i) for i in alpha if s.find(i)==s.rfind(i) and s.find(i)!=-1]
        return min(s) if s else -1

猜你喜欢

转载自blog.csdn.net/weixin_44740082/article/details/90812121