【初级算法|字符串】10-字符串中的第一个唯一字符

48 阅读1分钟

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;
       }
   }
}

总结

该题的题型和之前的数组中找唯一值是相同。所以其实也是可以使用双指针的方式遍历找到唯一的值。

题目来源:leetcode-cn.com/leetbook/re…