我的老师要求我们尝试构建一个不使用str.split()方法就能找到字符串中最长单词的函数。该函数应将字符串作为参数,并输出最长单词的长度。
到目前为止,我已经尝试制作一个函数,使用.push方法将字符串放入数组中,然后尝试将该数组分解为每个单词,并在每个子数组中找到每个单词的长度,然后进行比较。因为我不聪明或没有足够的经验来做这件事,所以我的一个朋友告诉我尝试:
> “只需使用两个“ tracking”变量。一个变量跟踪当前单词,另一个变量跟踪迄今为止看到的最长单词,我将让您考虑这些变量的初始值。接下来,它只是一个遍历str的每个字符(字符串像数组一样可迭代)以“构建”一个单词的问题,当您遇到空格字符或str的结尾时,您知道您有一个完整的单词。您可以比较此单词的长度使用当前最长的单词(您的其他跟踪变量),并将两者中的较大者分配给最长的单词跟踪变量。在迭代的最后,最长的单词跟踪变量将包含最长的单词长度,您可以返回该长度。在检查单词变量的长度之后,您将需要重置它,因此它不会在其余的迭代过程中继续“构建”。” >
我不太确定他的意思或做什么。
到目前为止,我有这个:
function findLongestWordLength(str) {
let words = []
words.push(str);
console.log(words)
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
我该怎么办?我已将字符串推送到数组,但是现在我的朋友给了我一个提示,我不确定该怎么办。
答案 0 :(得分:2)
Loop through each character in the string,添加到当前单词。如果要进入空格,请检查当前单词是否长于上一个最长单词。如果是的话,将其存储。如果不是,则不执行任何操作。
清除当前单词并继续在字符串中移动。
arrays
答案 1 :(得分:1)
也许更简单快捷的方法是使用像这样的简单正则表达式
function findLongestWordLength( str ) {
var longestWord = "";
str.replace( /\S+/g, function( match ) {
if ( match.length > longestWord.length )
longestWord = match;
}
);
return longestWord; // .length;
}
console.log( findLongestWordLength("The quick brown fox jumped over the lazy dog") );