[英]Find the longest word in a string?
我正在嘗試編寫一個基本的javascript函數以查找字符串中最長的單詞並記錄其長度。
到目前為止,我有:
function findLongestWord(str) {
var words = [];
var longest = [];
words.push(str.split(" "));
for(var i = 0; i < words.length; i++){
if (words[i].length > longest[0].length){
longest.push(words[i]);
}
}
return longest[0].length;
}
findLongestWord('The quick brown fox jumped over the lazy dog');
這對我來說很有意義,但是卻給我一個錯誤。 我嘗試了console.logging的每個步驟,但在for循環中均失敗了。
當您使用words.push(str.split(" "))
,數組words
看起來像
[
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
]
另一個問題是,當您檢查longest[0].length
在第一次迭代for
,它是undefined
。 導致錯誤
未捕獲的TypeError:無法讀取未定義的屬性“ length”
為了解決這個問題,您可以使用longest
string
而不是array
。 在for
,為其分配length
大於當前longest
字符串的字符串。
在函數末尾,您可以返回longest
字符串。
問題/建議:
str.split(' ')
直接分配給words
變量 longest
string
變量而不是array
, initialize
其initialize
為空字符串,即''
,以避免上述錯誤 longest
的長度和words
數組中的字符串 words
數組中字符串的長度大於longest
字符串,請更新longest
字符串。 \\s+
以空格split
字符串 function findLongestWord(str) { var words = str.split(/\\s+/); var longest = ''; for (var i = 0; i < words.length; i++) { if (words[i].length > longest.length) { longest = words[i]; } } return longest; } var longestWord = findLongestWord('The quick brown fox jumped over the lazy dog'); document.write('Longest Word: "' + longestWord + '"'); document.write('<br />Longest Word Length: ' + longestWord.length);
您可以使用Array.prototype.sort
和Array.prototype.shift
大大簡化此過程。 例如
var str = 'The quick brown fox jumped over the lazy dog', longest = str.split(' ').sort(function(a, b) { return b.length - a.length; }).shift(); document.getElementById('word').innerHTML = longest; document.getElementById('length').innerHTML = longest.length;
<p id="word"></p> <p id="length"></p>
sort()
將產生一個按長度(從最長到最短 )排序的字符串數組,而shift()
將獲取第一個元素。 您還可以使用return a.length - b.length
和pop()
而不是shift()
來獲取最后一個元素,以另一種方式(從最短到最長 )排序。
嘗試
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
if (longest < str[i].length) {
longest = str[i].length;
word = str[i];
}
}
return word;
}
function findLongestWord(str) {
var arr=str.split(" ");
var sarr=arr.sort(function(a,b){return b.length-a.length;});
str=sarr[0];
return str.length;
}
使用javascript Array.prototype.sort()
我們可以優雅地解決此問題,而無需使用循環
if (words[i].length > longest[0].length)
您將在上面的行中得到錯誤。 與第一次一樣,它是空的。
您的聲明
words.push(str.split(" "));
應該
words=str.split(" ")
@Tushar也解決了您的其余“問題” ... ;-)
這是另一個較短的版本:
function findTheLongestWord(str) { var temp = ''; (str || "").split(/\\s+/).forEach(function(word) { temp = word.length > temp.length && word || temp; }); return "longest word is: " + temp + " and it's length is: " + temp.length; } alert (findTheLongestWord("The quick brown fox jumped over the lazy dog, once again!"));
要在Java中找到最長的關鍵字字符串,您需要編寫一個程序。
public class FindLarge {
private String longestWord;
public String longestWord(String sen) {
String arr[] = sen.split(" "); // seperates each word in the string and stores it in array
longestWord = arr[0]; // Assume first word to be the largest word
for (String a : arr)
if (longestWord.length() < a.length()) // check length of each word
longestWord = a;
return longestWord;
}
public static void main(String[] args) {
FindLarge fl=new FindLarge();
String longestWord=fl.longestWord("Hello Welcome to Java"); // string to be checked
System.out.println("Longest Word: "+ longestWord); // Final Output
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.