之前一直有看,都是看了大概的思路,没有自己去写。所以最后面试官要求手写的时候懵逼了。这里特意记下以便下次用到。顺便带一句,看面试题为了查缺补漏。死记硬背肯定不好的,能理解最好,能手写更好了,毕竟工作中也可能用到。
上代码:
var str = 'adafjajddddajdsajfjjjddddakks'
/* 封装一个查询最多字符串的函数 */
function maxStringNum(str) {
/* 定义一个空的对象来接收结果 */
var obj = {}
for (var i = 0; i < str.length; i++) {
/* charAt获取字符串的索引 */
/* 判断obj是否存在一个为 obj[str.charAt(i)] 的键;*/
if (!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1 /* 如果不存在,那么就添加这个键,并且赋值为1;*/
} else {
obj[str.charAt(i)]++ /* 如果已经存在这个键,那么就给这个键的值加1 */
}
}
console.log(obj)
var maxNum = 0 // 假设是出现次数最多的次数
var maxStr = '' // 假设这个字符串是次数出现最多的字符串
for (var key in obj) {
if (obj[key] > maxNum) {
maxNum = obj[key] // 保存最多次数
maxStr = key
}
}
return '出现最多次数的字符串是:' + maxStr + '出现了' + maxNum + '次'
}
console.log(maxStringNum(str))
打印效果如下:
本文借鉴了以下两个大佬的博客,思路都一样,只不过两人的写法基本相反,然后整合了下自己习惯的方式。
啰嗦一边,给自己提个醒:最主要还是要理解,有自己的思路才是最重要的!
大佬1:https://blog.youkuaiyun.com/xiasohuai/article/details/81978222
大佬2:https://www.cnblogs.com/houfee/p/9300265.html
如有侵权,请联系本人删除,谢谢!!!