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

题目描述

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

示例: s = "leetcode" 返回 0

s = "loveleetcode" 返回 2

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的AC代码

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    let dict = {};
    for(let i = 0, len = s.length; i < len; i++) {
        let ch = s[i];
        if(dict[ch]) {
            dict[ch] += 1;
        }
        else {
            dict[ch] = 1
        }
    }
     for(let i = 0, len = s.length; i < len; i++) {
        let ch = s[i];
        if(dict[ch] === 1) {
            return i;
        }
    }
    return -1;
};

题解思路

遍历两遍字符串,第一遍,使用字典对出现的字母进行计数,第二遍寻找第一个次数为1的字母,返回它的索引即可。

时间复杂度: O(N)O 只遍历了两遍字符串,同时字典中查找操作是常数时间复杂度的。

空间复杂度: O(N) 用到了字典来存储字符串中每个元素出现的次数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。