如何统计字符串中出现最多的字母与个数
栏目: JavaScript · 发布时间: 5年前
内容简介:闲来无事,穷折腾。最近我朋友在找工作,遇到一些面试题,或者遇到一些问题会及时跟我讨论。我则作为他的幕后军师,为他出谋划策。接下来我分享给大家一道简单的面试题。例:写一个函数专门处理这个事情。
闲来无事,穷折腾。最近我朋友在找工作,遇到一些面试题,或者遇到一些问题会及时跟我讨论。我则作为他的幕后军师,为他出谋划策。接下来我分享给大家一道简单的面试题。
题目
统计字符串中出现最多的字母与个数?
分析
1、验证数据是否字符串 2、字符串转换为数组 3、统计字符串出现的次数 复制代码
例:
var str = 'aaaadddddssssgdhssssbbbbbuuuwmopqlsabcfwsqdghgukssuyutsudddddsasss'; 复制代码
写一个函数专门处理这个事情。
/** * * 检查字符串中出现次数最多的那个 * */ function maximum(s) { //【第一步】验证合法性 if (typeof s !== 'string') { throw ('s is string'); } //【第二步】转换为数组 var array = s.split(""); //【第三步】找出最多的字母 //这一步最关键 } 复制代码
其实最重要的是第三步,看你站在什么样的思路去找对应的字母与其个数。大多数人会选择使用两个循环进行处理。
代码如下:
/** * 检查字符串中出现次数最多的那个 */ function maximum(s) { if (typeof s !== "string") { throw "s is string"; } var array = s.split(""), l = array.length, obj = {}, ismaxObj = { max: 0, val: "" }, arrayVal = ""; while (l--) { arrayVal = array[l]; if (!obj[arrayVal]) { obj[arrayVal] = []; } obj[arrayVal].push(arrayVal); if (ismaxObj.max != 0) { if (obj[arrayVal].length > ismaxObj.max) { ismaxObj.max = obj[arrayVal].length; ismaxObj.val = array[l]; } } else { ismaxObj.max = obj[arrayVal].length; ismaxObj.val = arrayVal; } } //console.log(array); console.log(ismaxObj);//出现次数最多的字母与次数 console.log(obj);//数据重组直观看到数据分布 } maximum( "aaaadddddsgdhssssbbbbbuuupqlsabcfwsqdghgukssuyutsudddddsasss,ewfd,null,undefind.?Qzadsdvsf\/\\\\[;ll;,lw" ); 复制代码
结果如图所示:
追问
如果面试官追问,如何确定最多的字母的第一个位置与最后一个位置? 其实我们在push的时候就可以把这个数据的位置存起来,稍加改动即可求出。
/** * 检查字符串中出现次数最多的那个 */ function maximum(s) { if (typeof s !== "string") { throw "s is string"; } var array = s.split(""), ll = array.length, obj = {}, ismaxObj = { max: 0, val: "" }, arrayVal = ""; for (var l=0;l<ll;l++) { arrayVal = array[l]; if (!obj[arrayVal]) { obj[arrayVal] = []; } obj[arrayVal].push(arrayVal+'-'+l); if (ismaxObj.max != 0) { if (obj[arrayVal].length > ismaxObj.max) { ismaxObj.max = obj[arrayVal].length; ismaxObj.val = array[l]; } } else { ismaxObj.max = obj[arrayVal].length; ismaxObj.val = arrayVal; } } console.log(obj[ismaxObj.val][0],obj[ismaxObj.val][obj[ismaxObj.val].length-1]);//最多的字母的第一个位置与最后一个位置 console.log(ismaxObj);//出现次数最多的字母与次数 console.log(obj);//数据重组直观看到数据分布 } 复制代码
这是我给出的方案,也许还不是最优质的。望各位大佬指正。
总结
其实对于面试来说最重要的是考察面试者处理问题的逻辑思路,有些人能够解决问题,有些人能够以最优质的方案解决问题。前者是干活的人,后者是干好活的人。
以上所述就是小编给大家介绍的《如何统计字符串中出现最多的字母与个数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 高频算法面试题(字符串) 242. 有效的字母异位词
- sql 判断字符串中是否包含数字和字母的方法
- C语言实现字符串英文字母大小写的转换
- LeetCode每日一题: 反转字符串中的元音字母(No.345)
- 无字母数字webshell之提高篇
- 无字母数字Webshell之提高篇
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。