美文网首页数据结构和算法分析让前端飞程序员
《剑指offer》— JavaScript(34)第一个只出现一

《剑指offer》— JavaScript(34)第一个只出现一

作者: echoVic | 来源:发表于2017-03-23 12:44 被阅读0次

    第一个只出现一次的字符

    题目描述

    在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置。


    思路

    1. 新建一个对象,其中key用来存放字符,value用来存放该字符出现的次数;
    2. 第一次循环,将所有字符和对应出现的次数存放在map中,时间复杂度为0(n);
    3. 第二次循环找到value为1的字符所在的位置,并返回。

    实现代码

    function FirstNotRepeatingChar(str) {
        if (str.length == 0)
            return -1;
    
        var map = {};
        for (var i = 0; i < str.length; i++) {
            var charX = str[i]
            if (!map[charX]) {
                map[charX] = 1;
            } else {
                map[charX]++;
            }
        }
    
        for (var i = 0; i < str.length; i++) {
            var charY = str[i];
            if (map[charY ] == 1)
                return i;
        }
    }
    

    相关文章

      网友评论

        本文标题:《剑指offer》— JavaScript(34)第一个只出现一

        本文链接:https://www.haomeiwen.com/subject/gbuznttx.html