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

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

(1)一种方法

最容易想到的是统计这个字符串中每个字符出现的次数,遍历字符串如果某个字符出现只有一次的话,那么就是我们要找到的位置。创建一个用来记录每个字符出现次数的数组。大小为26,因为有26个英文字母,每个字母都可能出现。要遍历首先应该吧这个字符串转成字符数组,s.toCharArray。遍历字符数组,将每个数组对应的值chras[i]-'a',得到的的是某个英文字母对应的在整型数组中的位置。例如:'b'-'a'=1,b在第二个位置。

遍历完后,在遍历这个数组,当发现存储的第一个某一个数数量是1,代表他就是第一个独立的数

 (2)第二种方法

方法与第一种大同小异,只不过不用数组存出现的次数,用hashmap存储,应为hashmap可以一次性存字符和对应的值,值得一提的值,用到底了hashmap的

ch.put(aChar,ch.getOrDefault(aChar,0)+1),这个参数第一个数是我们向hashMap里边传的字符,而各个参数,如果这个achar本来存在,就输出原有的的键对应的值,但现在修改为0,又加1,代表,如果每出现一个这个键值,对应的值就加一,所以,遍历完这个数组,我们就知道了,每个数组对应的数量了

 (3)第三种方法

我们java字符串有自带的,s.indexof(),和s.ilastindexof(),两个方法,所以遍历整个字符串,用charat(i)得到每个字符,你想,如果这个最前边的出现的s.indexof()的值对应的这个字符,和s.ilastindexof()出现的这个字符位置是一样的,是不是就代表这个字符只有一个,因为只有一个,他才会最前边找和最后边找,找出来的是同一个。

 

根据大佬的写法自己写的题的总结(仅供自己复习回顾使用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几丝乏味

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值