Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
【初级算法|字符串】10-字符串中的第一个唯一字符
题目
给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。(s 只包含小写字母)
输入: s = "loveleetcode"
输出: 2
输入: s = "aabb"
输出: -1
思路分析
字符串内寻找不重复的数字,并输出其所在的位置。可以通过暴力解决,使用一个数组来记录每个元素出现次数,如 l 出现2次,那么可以在数组 ary[1] = 2,然后遍历数组中值为1 就是的位置就是结果。
如果不使用数组,也可以使用一个键值对象。然后统计每个字母出现的次数,最后再去查找其在数组中的所在位置。
另外一种比较简单的解法,就是利用语言已经提供的方法,仅遍历一次 ,find 方法去查询,得到2条数据都忽略,只有一个的即是输出结果。
AC 代码
function func_exerise8 (s){
let res = {}
let data = s.split('')
for(let i=0;i<data.length;i++){
if(res[data[i]]){
res[data[i]]++;
}else{
res[data[i]] = 1;
}
}
for(let i=0;i<data.length;i++){
if(res[data[i]]==1){
return i;
}
}
}
总结
该题的题型和之前的数组中找唯一值是相同。所以其实也是可以使用双指针的方式遍历找到唯一的值。