zoukankan      html  css  js  c++  java
  • 那晚征服的一道js经典的面试题

    今天朋友共享了一道js中经典的面试题,需求是这样的

    给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出

     刚拿到这道题的第一感觉便是定义一个count计时器,然后通过for循环 里面嵌套if判断,但是这样的话貌似并不是一个很好的解决方案

    因为你并不知道该字符串是数字还是字母和 特殊符号,又或者是这三者的组合形式,所以,这种方案就显得极其的麻烦和繁琐了

    所以有一个算是比较好的解决方案,代码如下

     //判断一个随意字符串中出现次数最多的字母,并判断出出现过几次
            var str = "saidhsd,pmgmtpmrpashdoasdnassdsjaoiosdnasndasnd";
            var join = {};//定义一个对象
            for (var i = 0; i < str.length; i++) {
                //判断该字符串截取出来的这一个字符是不是在join对象中存在
                if (!join[str.charAt(i)]) {
                    //如果不存在,则以该单字符作为join对象的键值,将其values赋值为1
                    join[str.charAt(i)] = 1;
                } else {
                    //如果存在,则找到该键值对应的value值 将其自增
                    join[str.charAt(i)]++;
                }
            }
    
            var max = 0;//定义一个最大值,用于保存出现次数最多的字符的次数
            var maxStr = "";//用于保存出现次数最多的那个字符
            //打擂算法循环输出join中保存的数据
            for(var item in join){
                //每一个item都代表着一个join对象的键值(也就是字符)
                if(join[item]>max){
                    max = join[item];
                    maxStr = item;
                }
            }
            alert(maxStr+"字符出现的次数为:"+max);

    因为每行代码都标注了详细的注释,下面我就不再重复的解释代码了,

    其实,大家从这道面试题就可看出,不管是js代码还是java代码,思想都是相通的,只要掌握了解题技巧,不管是那种语言,都会有一种游刃有余的感觉(当然,本人并没有达到这种境界~)

  • 相关阅读:
    Day 69
    Day 68
    Day 67
    Day 66
    Day 65
    Day 64
    Day 63
    Day 62
    Day 61
    Day 60
  • 原文地址:https://www.cnblogs.com/liujiayun/p/5554856.html
Copyright © 2011-2022 走看看