zoukankan      html  css  js  c++  java
  • (剑指offer ) 第一个只出现一次的字符javascript解法

    题目描述

    在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
    解题思路:
    这道题我们要统计每个字符在字符串中出现的次数,那就需要一个容器来存放每个字符的出现次数,在这个容器中可以根据字符来查找他出现的次数,也就是说这个容器的作用是把这个字符映射成一个数字,因此我们可以定义一个map对象,也叫哈希表,它的键(key)是字符,值(value)是该字符出现的次数。
    我们需要两次循环:
    第一次循环将所有字符和对应出现的次数存放在map中,时间复杂度为0(n);
    第二次循环找到value为1的字符所在的位置,并返回。
    function FirstNotRepeatingChar(str)
    {
        // write code here
        if(str.length === 0){
            return -1
        }
        let map = {}
        for(let i = 0; i < str.length; i++) {
            let charX = str[i]
            if(!map[charX]) {
                map[charX] = 1
            }else {
                map[charX] ++
            }
        }
        for(let i = 0; i < str.length; i++) {
            let charY = str[i]
            if(map[charY] == 1){
                return i
            }
        }
    }
    不积跬步无以至千里
  • 相关阅读:
    端口以及服务常用cmd
    异步,同步,阻塞,非阻塞,并行,并发,
    mysql启动不起来
    安装nagios出现的错误
    Linux内核优化
    mysql使用常见问题
    mysql日志
    mysql数据库使用脚本实现分库备份过程
    mysqladmin常用用法
    mysql授权
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12564917.html
Copyright © 2011-2022 走看看