这题我在纠结到底命名成"求字符出现最大次数"还是"统计字符出现最大次数"好,后来我选择后者,求表示的是你只要找到最大的次数就好,你管它是谁有几个,而统计它所表示的含义是,你要把它具体给我列举出来。之所以有这个想法,是考虑到生活中的场景哪有那么巧啊,有可能有很多个相同的最大次数呢? 好了,我们开始做题吧。 题目描述给定一串连续的字符串(无空格不间断),要求统计出该字符串中字符出现的最大次数,返回的格式是对象格式,具体的请看测试用例。 测试用例1输入happyeveryday 输出{ y: 3 } 测试用例2输入ataolaismeiamfinedonotworry 输出{ a: 4, o: 4 } 题解先天真一下下怎么个天真法呢,假定一串字符串,有且仅有一个最大的字符出现次数,具体多少次,有辣么多辣么多辣么多次,你尽管想。返回格式形如 好,首先我们可以定义一个对象 function getMaxCountLetter(str) { 再现实一点点如果写出楼上的写法,面试的时候其实已经是放行了。但是生活往往是很多的不理想构成的理想社会。正所谓,too young too simple, sometimes navie. 那我们就进一步优化,我们把可能存在多个相同最大值的情况考虑进去。 好,我们接着讲。上面的思路直到获取obj对象都不用改动,我们接着只是想知道,最大的那位选手它的值是多少,它是谁我不care的。那么我们就要求其中的最大值,把obj对象的的值转成数组,然后ES6的扩展运算符转成string类型,再然后调用 function getMaxCountLetter(str) { 原题出处: 浙大网新外包岗笔试题(改动版) 代码地址: http:///coding/interview/count_letters.js 项目地址: https://github.com/ataola/coding
|
|