字符串中的第一个唯一字符

326 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述

  • 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
  • 示例 1:
    • 输入:s = "leetcode"
    • 输出: 0
  • 示例 2:
    • 输入:s = "loveleetcode"
    • 输出: 2
  • 示例 3:
    • 输入: s = "aabb"
    • 输出: -1
  • 提示:
    • 1 <= s.length <= Math.pow(10, 5)
    • s 只包含小写字母

二、思路分析:

  • 要求找到第一个不重复的字符,大概率要循环遍历字符串
    • 首先将给定的字符串转化为数组,js里面的数组遍历还是比较方便的
    • 然后遍历数组,判断遍历的当前项是不是在数组中唯一,如果是,返回当前项的下标,如果不是,遍历下一个,直到整个数组查找玩,没有就返回-1
  • 判断当前项是否唯一
    • 一种就利用数组的indexOflastIndexOf方法来判断,只遍历一次

三、AC 代码:

function firstUniqChar(s: string): number {
    if(s.length === 1) return 0;
    let strArr = s.split('');
    for(let i = 0; i < strArr.length; i++){
        if(strArr.indexOf(strArr[i]) === strArr.lastIndexOf(strArr[i])){
            return i
        }
    }
    return -1
};

四、总结:

  • 需要注意一下数组长度为1的特殊情况,这样是必不可能出现重复项的
  • 这种应该代码比较少吧,题解区看了其他大佬的代码,感觉比这多一些,还有其他简便的方法,感兴趣可以去题解区看看