gpt4 book ai didi

Javascript 函数可以分析字符串中的单词?

转载 作者:行者123 更新时间:2023-11-28 15:19:47 27 4
gpt4 key购买 nike

我必须用 JavaScript 编写一个函数。

  1. 接收一个字符串(完整句子)。
  2. 分析哪些单词重复字母数最多(即兔子、快乐、那里等)。
  3. 重复的字母不必是连续的。
  4. 以数组格式返回重复字母数最多的一个(或多个,如果有平局)单词。

示例:

console.log(letterRepeat("Hello there Mr. Gormoon!));

输出:

{Gormoon}

到目前为止,我已经创建了一个函数,该函数将首先拆分单词,然后拆分字母:

var wordSelector = function(str){
var wordArray = [];
wordArray.push(str.split(" ").map(function(word) {
return word.split("");
}));
return wordArray[0];
};

console.log(wordSelector("Hello there Mr. Gormoon!"));

输出:

[["H", "e", "l", "l", "o"], ["t", "h", "e", "r", "e"], ["M", "r", "."], ["G", "o", "r", "m", "o", "o", "n", "!"]]

到目前为止,我已经清楚地知道需要做什么,但我不确定如何计算每个单词的每个字母,然后确定最大值?

但是一旦我对它们进行了计数,我就可以对它们进行排序并在位置 wordArray[0]

最佳答案

这是我的解决方案。

我使用String method split使用表示非单词字符的正则表达式将给定句子拆分为单词。我用Array method filter从单词数组中删除空值。

然后,我使用 Array method reduce计算一个字符在单词中重复的次数,然后在函数 maxLetterRepeat 中选择重复字符计数的最大值。之后,我使用 Array method reduce再次选择具有最大重复字符数的单词。

function maxLetterRepeat(str) {
if (str) {
charCounts = str.split('').reduce(function (acc, c) {
acc[c] = (acc[c] || 0) + 1;
return acc;
}, {});

console.log("Char counts for " + str + " => ", charCounts);

max = Object.keys(charCounts).reduce(function(max, c) {
return (max < charCounts[c]) ? charCounts[c] : max;
}, 0);

console.log('Max repeated letters in "' + str + '" ->', max);

return [str, max];
}
}


wordsAndMaxRepeats = "Hello there Mr. Gormoon!".split(/\W/)
.filter( function (e) { return e.length > 0 }).map(maxLetterRepeat);
console.log("Words & Max Char Repeated count => ", wordsAndMaxRepeats);

wordWithMaxRepeat = wordsAndMaxRepeats.reduce(function (p, c) {
return p[1] > c[1] ? p : c;
})[0];

console.log("Word with max repeated chars => " + wordWithMaxRepeat);

程序输出

Char counts for Hello =>  { H: 1, e: 1, l: 2, o: 1 }
Max repeated letters in "Hello" -> 2
Char counts for there => { t: 1, h: 1, e: 2, r: 1 }
Max repeated letters in "there" -> 2
Char counts for Mr => { M: 1, r: 1 }
Max repeated letters in "Mr" -> 1
Char counts for Gormoon => { G: 1, o: 3, r: 1, m: 1, n: 1 }
Max repeated letters in "Gormoon" -> 3
Words & Max Char Repeated count => [ [ 'Hello', 2 ], [ 'there', 2 ], [ 'Mr', 1 ], [ 'Gormoon', 3 ] ]
Word with max repeated chars => Gormoon
[Finished in 0.3s]

关于Javascript 函数可以分析字符串中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32015623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com