首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >采访javascript foreach

采访javascript foreach
EN

Stack Overflow用户
提问于 2017-12-05 02:58:28
回答 1查看 109关注 0票数 0

Q:编写一个名为countLetters的函数,它接受字符串,并以字母在字符串中出现的次数返回值。嗨,有更有效的方法来解决这个问题吗?

O(n)解,如何使它成为O(log n)

代码语言:javascript
复制
function countLetters(str){
    var splitArr = str.toLowerCase().split("");
    var obj = {};
    var letters = "abcdefghijklmnopqrstuvwxez";
  
    splitArr.forEach((letter)=>{
        if(letters.includes(letter)){
            if(letter in obj){
                obj[letter]++;
            } else{
                obj[letter] = 1;
               
            }
        }
    });
    return obj;
}
console.log(countLetters('Ellie'))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 03:18:09

这不是O(log n),因为考虑到当前的问题,这是不可能实现的。不过,我认为这是一个更简洁的解决办法。

代码语言:javascript
复制
function countLetters(str){
  var letters = str.toLowerCase().replace(/[^a-z]/g, '').split('');
  
  return letters.reduce(function (counts, letter) {
    counts[letter] = (counts[letter] || 0) + 1;
    return counts;
  }, {});
}

console.log(countLetters('Hello World!'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47645372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档