leetcode-字符串-387-字符串中的第一个唯一字符

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

题目描述(难度:简单)

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

示例1:

    s = "leetcode"
    返回 0.

    s = "loveleetcode",
    返回 2.

思路1:

  • 某个字符从头开始开始的索引和从尾开始找的索引如果相等,就说明这个字符只出现了一次

  • 详解

    • 1.从头到尾遍历一遍字段串;
    • 2.判断每个位置的字符的 index() 和 lastIndexOf() 的结果是否相等;

代码1

    /**
     * @param {string} s
     * @return {number}
     */
    const firstUniqChar = function (s) {
        for(let i =0;i<s.length;i++){
            if(s.indexOf(i) === s.lastIndexOf(i)){
                return i;
            }
        }
        return -1;
    };

思路2:

  • 遍历两次。第一次遍历,用一个哈希对象记录所有字符的出现次数;第二次遍历,找出哈希对象中只出现一次的字符的下标

  • 详解:

    • 1.第一次遍历,用一个哈希对象记录所有字符的出现次数;
    • 2.第二次遍历,找出哈希对象中只出现一次的字符的下标;

代码2

    /**
     * @param {string} s
     * @return {number}
     */
    const firstUniqChar = function (s) {
        let hash = {};
        for(let i = 0;i<s.length;i++){
            if(!hash[i]){
                hash[i] = 1;
            }else{
                hash[i]++
            }
        }

        for(let i =0;i<s,length;i++){
            if(hash[i]===1){
                return i;
            }
        }
        return -1;

    };

   转载规则


《leetcode-字符串-387-字符串中的第一个唯一字符》 朝飞 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
leetcode-字符串-125-验证回文字符串 leetcode-字符串-125-验证回文字符串
125. 验证回文串题目描述(难度:简单) 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例1: 输入: "A man, a plan
2020-05-17
下一篇 
leetcode-字符串-344-反转字符串 leetcode-字符串-344-反转字符串
344. 反转字符串题目描述(难度:简单)(中文版)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题
2020-05-17
  目录