使用 JavaScript 查詢陣列中所有最長的字串
在給定的問題陳述中,我們必須藉助 Javascript 功能從陣列中找到所有最長的字串。所以基本上,可以透過獲取每個字串的長度,然後將這些長度與最大長度進行比較來完成此任務。
理解問題
手頭的問題是從 Javascript 中的陣列中找到最長的字串。所以我們將有一個字串陣列,我們的主要任務是識別具有最大長度的字串並將它們顯示為一個新陣列。例如:假設我們有一個字串陣列 ['abc', 'defg', 'hijkl', 'mnopqr', 'stuvwxyz'],那麼此陣列中最長的字串是 ['stuvwxyz']。所以我們必須實現函式來執行相同的任務。
給定問題的邏輯
為了解決這個問題,我們將定義一個函式來執行此任務。並且在函式內部,我們首先必須找到字串的長度。為此,我們將迭代字串陣列並跟蹤找到的最大長度。對於陣列中的每個字串,我們將將其長度與當前最大長度進行比較,並在需要時進行更新。因此,我們將擁有最長字串的長度。
現在,我們將透過再次迭代字串陣列來過濾最長字串,這次我們將使用 filter 方法。如果長度與找到的最大長度匹配。因此,我們將將其包含在陣列中。最後,我們將返回一個新陣列,其中將包含所有最長的字串。
演算法
步驟 1:由於我們必須在給定陣列中找到最長的字串。因此,為了執行此任務,我們將建立一個名為 findLongestStrings 的函式,此函式將接收一個數組作為輸入。在這個陣列中,我們將有字串。我們將從中找到最長的字串。
步驟 2:現在,我們將使用一個變數來儲存字串的最大長度值。並將其初始化為零。
步驟 3:在此步驟中,我們需要找到陣列中存在的字串的長度並找到字串的 maxLength。因此,我們將遍歷陣列項。
步驟 4:在迴圈內部,我們將檢查字串長度是否大於 maxLength 的條件,如果此條件為真,則使用當前字串的長度更新 maxLength 值。遵循此步驟,直到我們找到 maxLength 為止。
步驟 5:因此,我們將使用最長字串過濾字串陣列。為了執行此任務,我們將使用 filter 方法遍歷字串陣列。對於每個字串,我們將檢查其長度是否與 maxLength 匹配。如果長度相等,我們將返回一個新陣列,該陣列將包含陣列中最長的字串。
示例
// Function to find the longest string function longestStrings(array) { let maxLength = 0; for (let i = 0; i < array.length; i++) { if (array[i].length > maxLength) { maxLength = array[i].length; } } const longestStrs = array.filter((str) => str.length === maxLength); return longestStrs; } const strings = ["strawberry", "banana", "kiwi", "orange", "pear"]; const longest = longestStrings(strings); console.log(longest);
輸出
[ 'strawberry' ]
複雜度
從陣列中查詢最長字串的時間複雜度為 O(n),其中 n 是陣列中存在的字串數。因為我們執行了兩個基本操作。第一個是查詢最大長度,第二個是將字串的長度與計算出的最大長度進行匹配。此函式的空間複雜度為 O(1) 到 O(n),因為它取決於陣列中找到的最長字串的數量。
結論
我們實現的程式碼有效地解決了問題。此程式碼有效地找到陣列中的最大長度和最長字串。程式碼的複雜度是線性的,這使得程式碼對於任何大小的陣列都非常有效。