力扣初级算法刷题记录-字符串中第一个唯一字符

                                      

思路:

       这道题的基本思路是遍历字符串,从第一个元素开始检查是否存在重复的情况,找到第一个只出现一次的字符返回其索引。这道题和之前刷过的“两数字之和”都可以使用字典的方法储存遍历到的元素。遍历字符串中的字符,怎样去检查重复的情况?整体思路是通过设置字典,字典的key是遍历到的当前字符,字典的value代表当前字符出现过的次数。如果遍历到的元素存在于字典中,则将其value值增加1,便于后续筛选。

补充知识:

学习了文章:python enumerate的详解_for index,s in enumerate-CSDN博客

Python中的内置函数enumerate()

相关用法

代码示例(列表):
s=[6,7,8,2,3]
for i in enumerate(s):
  print(i)
输出结果:

代码示例(元组):
s=(6,7,8,2,3)
for i in enumerate(s):
  print(i)

输出结果:

代码示例(字符串)

s="Box"
for i in enumerate(s):
  print(i)

注意:

1.审题一定要仔细:如果不存在,则返回-1,因此最后别忘了return -1

2.这里访问索引不是通过之前的char(即dict[char]) ,而是通过dict[value] 访问,但本质都是字符串s的字符

for index,value in enumerate(s):
            if dict[value]==1:
                return index

代码

class Solution(object):
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        dict={}
        #第一次遍历字符串,统计好每一个字符出现过的次数,便于后续筛选
        for char in s:
            if char in dict:
                dict[char]+=1
            else:
                dict[char]=1
        #第二次遍历字符串进行进一步的筛选
        for index,value in enumerate(s):
            if dict[value]==1:
                return index
        return -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值