Q:编写一个名为countLetters的函数,它接受字符串,并以字母在字符串中出现的次数返回值。嗨,有更有效的方法来解决这个问题吗?
O(n)解,如何使它成为O(log n)
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'))
发布于 2017-12-05 03:18:09
这不是O(log n),因为考虑到当前的问题,这是不可能实现的。不过,我认为这是一个更简洁的解决办法。
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!'));
https://stackoverflow.com/questions/47645372
复制相似问题