【发布时间】:2017-03-30 16:40:35
【问题描述】:
我写了一个函数,它接收一个句子并计算该句子中最长的单词。
function findLongestWord(str) {
var charArray = str.split(" ");
var wordArray = [];
for(var i = 0; i < charArray.length; i++ ) {
wordArray.push(charArray[i].length);
wordArray.sort();
wordArray.reverse();
}
return wordArray[0];
}
我的函数适用于以下输入:
findLongestWord("The quick brown fox jumped over the lazy dog");
但是当我通过它时:
findLongestWord("What if we try a super-long word such as otorhinolaryngology")
函数返回:
4
而不是
19
【问题讨论】:
-
.sort()不像您期望的那样工作。尝试为它提供一个回调,以正确排序您的数字。 -
去掉wordArray,reverse();会有什么结果
-
你实际上根本不需要
wordArray。在每一步,只需将当前长度与maxLen(初始设置为 0)进行比较并相应更新。 -
你不需要排序是
O(n log n)操作来按条件查找单个元素。 -
你可以一行。
return str.split(' ').reduce(function(prev, curr) { if (curr.length > prev) prev = curr.length; return prev; }, 0);
标签: javascript