javascript - JavaScript 递归计算重复字母
问题描述
我在编码时遇到问题。我想计算一个单词中有多少个字母递归重复。我的代码如下所示:
var check = words[0]
if(!words){
return 0
} else {
for(var i = 0; i < words.length; i++){
if(words[i] == check){
return 1 //+ countDuplicate (words.slice(1))
}
}
return countDuplicate (words.slice(1))
}
测试用例示例:
countDuplicate ('greatestme') // 2, ==> which are 'e' 3 times and 't' 2 times
解决方案
const freqDist = ([first, ...rest], counts = {}) => (result => (
rest.length ? freqDist(rest, result) : result
))({ ...counts, [first]: ((counts[first] || 0) + 1) })
/* More readable alternative with mutable `counts` */
// const freqDist = ([first, ...rest], counts = {}) => {
// counts[first] = (counts[first] || 0) + 1
// return (rest.length > 0) ? freqDist(rest, counts) : counts
// }
const stripSingles = obj => Object.keys(obj).reduce((acc, curr) => (
(obj[curr] > 1) ? { ...acc, [curr]: obj[curr] } : acc
), {})
console.log(stripSingles(freqDist('greatestme')))
推荐阅读
- python - Bs4错误可能来自错误的pip安装位置,我解决了但不是以pythonic方式
- php - Laravel 将聚合与另一个表中的值进行比较
- php - 服务器损坏文档上的 PHPWord 缺少提及某些部分
- javascript - 使用函数设置对象的值
- c - 如何在 C 中使用 rand() 函数生成 16 位随机数?
- jupyter-notebook - 如何使用 Python QuTip 实现这个哈密顿量?
- pandas - TypeError:重载函数“new_Date”的参数数量或类型错误
- javascript - 在 Google App 脚本中根据条件禁用按钮
- kotlin - 访问为 Textrecognizer 创建的变量
- android - FCM 在 Android 通知中不显示正文