给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -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()出现的这个字符位置是一样的,是不是就代表这个字符只有一个,因为只有一个,他才会最前边找和最后边找,找出来的是同一个。
根据大佬的写法自己写的题的总结(仅供自己复习回顾使用)