0%

20211223-题目

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

题目

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

示例:

1
2
3
返回 0

``` s = "loveleetcode"

返回 2

提示:你可以假定该字符串只包含小写字母。

题解

  • 双重循环遍历
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function firstUniqChar(s: string): number {
    const strMap = new Map<string, number>();
    for (let i = 0; i < s.length; i++) {
    strMap.set(s[i], (strMap.get(s[i]) || 0) + 1);
    }
    for (let i = 0; i < s.length; i++) {
    if (strMap.get(s[i]) === 1) {
    return i;
    }
    }
    return -1;
    }
  • 索引一致方法
  • 如果找到的第一个索引与倒数找到的最后一个索引相同,代表是第一个
    1
    2
    3
    4
    5
    6
    7
    8
    function firstUniqChar(s: string): number {
    for (let i = 0; i < s.length; i++) {
    if (s.lastIndexOf(s[i]) === s.indexOf(s[i])) {
    return i;
    }
    }
    return -1;
    }

相关链接