在JavaScript中形成最長的單詞
問題
我們需要編寫一個JavaScript函式,該函式以隨機的英文字母字串str作為第一個引數,以字串陣列arr作為第二個引數。
我們的函式的任務是嘗試從字串str中刪除一些字元,並檢查可以形成的哪些最長的單詞也存在於陣列arr中。我們的函式應該返回最長的可能字串。
如果沒有這樣的字串,我們應該返回一個空字串。
例如,如果函式的輸入為:
const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];
那麼輸出應該為:
const output = 'gfdfg';
輸出解釋
雖然陣列的第一個和第二個元素可以透過從字串中刪除字元來形成,但“gfdfg”是我們可以從字串str中形成的最長字串(5)。
示例
程式碼如下:
const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl']; const findLongestWord = (str = '', arr = []) => { arr.sort((a, b) => { if (a.length !== b.length) { return b.length - a.length; }; return a.localeCompare(b); }); for(const word of arr){ let index = -1; for(const char of word){ index = str.indexOf(char, index + 1); if(index < 0){ break; }; }; if (index >= 0){ return word; }; }; return ''; }; console.log(findLongestWord(str, arr));
程式碼解釋
我們經歷的步驟如下:
首先按長度然後按詞法順序排序陣列arr。
遍歷arr中的每個單詞,如果單詞的每個字元都不在字串str中,那麼我們只需返回。
如果每個單詞都匹配,那麼我們返回該單詞。
由於我們已經對字典進行了排序,我們可以保證第一次匹配就是我們的答案。
輸出
控制檯中的輸出將為:
gfdfg
廣告