剑指offer_50_第一个只出现一次的字符【javascript】

40 阅读1分钟

题目链接

leetcode.cn/problems/di…

题目

在字符串中找出第一个只出现一次的字符。如输入'abaccdeff',则输出‘b’。

题解

哈希表

var firstUniqChar = function(s) {
    var map = new Map();
    for(let i=0; i < s.length; i++){
        var cur = s.charAt(i);
        if(map.has(cur)){
            map.set(cur,false);
        } else {
            map.set(cur,true);
        }
    }

    for([key,value] of map){
        if(value){
            return key;
        }
    }
    return ' '

};

复杂度分析:

时间复杂度 O(N) : NNN 为字符串 arr 的长度;需遍历 arr 两轮,使用 O(N) ;HashMap 查找操作的复杂度为 O(1) ; 空间复杂度 O(1) : 由于题目指出 arr 只包含小写字母,因此最多有 26 个不同字符,HashMap 存储需占用 O(26)=O(1) 的额外空间。