Хорошо, возможно, мой последний вопрос, я был недостаточно ясен.Возвратите наибольшее количество повторяющихся символов в предложении
Я хочу вернуть слово с самыми повторяющимися символами в строке.
поэтому следующая строка:
There/'s a passage that I got memorized, seems appropriate for this situation: Ezekiel 25,17.
вернется ["appropriate"]
.
Но в случае, если существует более одного слова с одинаковым количеством повторяющихся символов, я хотел бы вернуть их все. так что следующая строка
Hello all from Boston
вернется ["Hello", "all", "boston"]
Вот код, который я до сих пор. Этот код был взят из этого другого StackOverflow thread
function returnRepeatChar(str){
var maxCount = 0;
var word = '-1';
//split string into words based on spaces and count repeated characters
str.toLowerCase().split(" ").forEach(function(currentWord){
var hash = {};
//split word into characters and increment a hash map for repeated values
currentWord.split('').forEach(function(letter){
if (hash.hasOwnProperty(letter)){
hash[letter]++;
} else {
hash[letter] = 1;
}
});
//convert the hash map to an array of character counts
var characterCounts = Object.keys(hash).map(function(key){
return hash[key];
});
//find the maximum value in the squashed array
var currentMaxRepeatedCount = Math.max.apply(null, characterCounts);
//if the current word has a higher repeat count than previous max, replace it
if (currentMaxRepeatedCount > maxCount){
maxCount = currentMaxRepeatedCount;
word = currentWord;
}
});
return word;
}
console.log(returnRepeatChar("There/'s a passage that I got memorized, seems appropiate for this situation: Ezekiel 25,17.")); //"appropriate"
Для "селезенки Криса", является результатом '[Крис, селезенка] или' [селезенка] '? И «собака человека», «человек, собака» или «человек, собака»? –
Измените слово из строки в массив. Если текущий счетчик больше максимального значения, установите «слово» в массив, содержащий текущее слово. Если текущий счетчик совпадает с максимальным числом, нажмите текущее слово на массив. В противном случае это точно так же, как и у вас. – Barmar
Если вы проигнорируете трудность токенизации слов, вопрос можно разбить на небольшие простые шаги. Создайте массив, который содержит «оценку» для каждого токена, отслеживая, что такое максимальная оценка. Затем возьмите все слова, которые имеют максимальный балл. Функция подсчета слов для слова довольно проста ... это просто цикл. –