保持單詞順序的反轉 JavaScript
在這個問題陳述中,我們的目標是利用 Javascript 功能,在保持單詞順序不變的情況下反轉單詞。為了解決這個問題,我們可以使用傳統的 for 迴圈以及 Javascript 的內建方法。
理解問題陳述
問題陳述的目標是建立一個函式,該函式接收一個字串作為輸入,並返回一個新字串,其中單詞的順序應該保持不變,但方向相反。例如,給定字串“Hello World”,則函式應返回“olleH dlroW”,其中“Hello”反轉為“olleH”,“World”反轉為“dlroW”。在這裡我們可以看到,原始字串中單詞的順序保持不變。
給定問題的邏輯
為了解決這個問題,我們可以使用 Javascript 的一些內建函式,也可以使用 for 迴圈(程式語言中的傳統方法)來解決。
所以首先我們將輸入字串分割成一個單詞陣列。然後反轉陣列中單詞的順序,然後將單詞重新連線成一個字串。對於每個單詞,我們可以透過將其拆分成字元陣列來反轉其字元的順序。然後反轉字元的順序並將它們重新連線成字串。
在這裡我們必須注意單詞的順序應該保持不變。這意味著我們必須在保留每個單詞中字元順序的同時反轉單詞的順序。
演算法 - 使用 for 迴圈
步驟 1 - 宣告一個函式來反轉單詞。並在其中傳遞一個引數。
步驟 2 - 使用兩個變數來跟蹤單詞。如果在單詞中找到空格,則將它們新增到名為 words 的陣列中。並將 word 變數重置為空字串以開始建立下一個單詞。
步驟 3 - 遍歷輸入字串中 words 的每個字元。並透過檢查空格字元來構建每個單詞。因此從輸入字串中提取所有單詞。
步驟 4 - 使用另一個迴圈以相反的順序迭代 words 陣列,並構建一個反轉單詞的新陣列。在迴圈內部,將使用另一個迴圈來迭代每個單詞中的每個字元,並按相反的順序構建新字串。
步驟 5 - 然後將每個反轉的單詞新增到反轉的單詞陣列中。
步驟 6 - 使用空格字元作為分隔符將反轉的單詞連線成單個字串。
演算法程式碼 - 使用 for 迴圈
// function to reverse the words function reverseWords(str) { let words = []; let word = ''; for (let i = 0; i < str.length; i++) { if (str[i] === ' ') { words.push(word); word = ''; } else { word += str[i]; } } words.push(word); let reversedWords = []; for (let i = words.length - 1; i >= 0; i--) { let reversedWord = ''; for (let j = words[i].length - 1; j >= 0; j--) { reversedWord += words[i][j]; } reversedWords.push(reversedWord); } return reversedWords.join(' '); } console.log(reverseWords('hello tutorials point')); console.log(reverseWords('this is a code')); console.log(reverseWords(' leading and trailing spaces '));
演算法 - 使用內建方法
步驟 1 - 宣告一個名為 reverseWords 的函式,它使用字串引數。
步驟 2 - 使用空格字元將輸入字串分割成單詞陣列。
步驟 3 - 將 map 方法應用於陣列以反轉每個單詞中字元的順序。
步驟 4 - 這是透過將每個單詞拆分成字元陣列來實現的。
步驟 5 - 使用 reverse 方法反轉字元的順序。
步驟 6 - 使用 join 方法將它們重新連線成字串。
演算法程式碼 - 使用內建方法
// function to reverse the words function reverseWords(str) { return str.split(' ').map(word => word.split('').reverse().join('')).join(' '); } console.log(reverseWords('hello tutorials point')); console.log(reverseWords('this is a code')); console.log(reverseWords(' leading and trailing spaces '));
複雜度
兩種程式碼的時間複雜度均為 O(n*m),其中 n 是輸入字串中單詞的數量,m 是每個單詞的平均長度。因此,傳統方法可能比使用內建方法慢,因為它需要更明確的迴圈和字元操作。
結論
使用 Javascript 的內建方法為反轉字串中單詞順序的問題提供了一種直接有效的方法。傳統實現為此提供了另一種解決方案。而傳統方法由於使用了多個 for 迴圈,可能是一個冗長的過程。