如何在 JavaScript 中就地反轉字串?


在本教程中,我們將學習如何在 JavaScript 中就地反轉字串。如何反轉字串是應屆畢業生面試中最常見的問題之一。這是一個簡單的任務,但面試官可能會很狡猾,讓你覺得這個問題很難。例如,如果面試官讓你編寫虛擬碼來就地反轉字串,而不使用額外的空間,你會怎麼做?你應該提前準備好這類棘手問題的答案。

反轉字串的方法有很多。隨著開發人員開發新的邏輯,他們可以構建新的演算法。

在本教程中,我們將透過建立自定義函式和內建方法來了解一些最流行的反轉字串演算法和方法。

使用 reverse() 方法

對於每個基本操作,JavaScript 都包含內建方法。同樣地,它也包含 reverse() 方法來反轉陣列。在我們的例子中,我們將字串轉換為字元陣列,然後反轉它,再將其重新連線成字串。

由於我們使用了 內建的 reverse 方法,因此它是一種最佳化的方法,因為每個庫函式都是以最佳化時間複雜度和空間複雜度的方式建立的。

演算法

使用者可以按照以下演算法使用 reverse() 方法反轉字串。

  • 步驟 1 − 使用擴充套件運算子將字串轉換為字元陣列。擴充套件運算子是三個點 (…),用於克隆任何物件或陣列。

  • 步驟 2 − 接下來,使用 reverse() 方法反轉字元陣列。

  • 步驟 3 − 使用 join() 方法連線反轉後的字元陣列,你就可以得到反轉後的字串了。

語法

使用者可以按照以下語法使用演算法中的方法。

let string = "TutorialsPoint";
let charArray = [ ...string ]; // convert string to char array
charArray.reverse( ); // reverse the array of character
string = charArray.join(''); // join array of character.

示例

以下示例演示了上述演算法的使用。

<!DOCTYPE html>
<html>
<body>
   <h2> Reverse the string in place in JavaScript. </h2>
   <p> After reversing the "TutorialsPoint" string using reverse() method: </p>
   <div id="output"></div>
   <script>
      let output = document.getElementById("output");
      let string = "TutorialsPoint";
      let charArray = [...string];
      charArray.reverse();
      string = charArray.join('');
      output.innerHTML = string;
   </script>
</body>
</html>

在以上輸出中,使用者可以看到我們的字串最終被反轉了。

使用 for 迴圈建立自定義演算法

此方法將建立一個遞增的 for 迴圈來反轉字串。在本節中,我們將就地反轉字串。就地反轉意味著不使用額外的空間或新變數來反轉字串。在以上方法中,我們建立了字元陣列,這意味著我們使用了額外的空間。

演算法

使用者可以按照以下演算法使用 for 迴圈反轉字串。

  • 步驟 1 − 遍歷字串,從字串的開頭到結尾。我們可以使用字串長度找到字串的終點。

  • 步驟 2 − 開始將字串的每個字元附加到新字串的前面。

  • 步驟 3 − 繼續執行步驟 3 直到字串的終點,你將得到反轉後的字串。

使用者可以按照以下語法使用迴圈反轉字串。

示例

在以下示例中,我們使用 reverseString 變數儲存反轉後的字串,並使用 for 迴圈使字串反轉。

<html>
<body>
   <h2> Reverse the string in place in JavaScript. </h2>
   <h4> After reversing the "welcome to TutorialsPoint" string using for loop algortim. </h4>
   <div id="output"></div>
   <script>
      let output = document.getElementById("output");
      let string = "welcome to TutorialsPoint";
      let l = string.length; // finding the length of the string
      let reverseString = '';
      for (let i = 0; i < l; i++) {
         reverseString = string[i] + reverseString;
      }
      output.innerHTML = reverseString;
   </script>
</body>
</html>

建立遞迴函式來反轉字串

本節將介紹遞迴方法來反轉字串。在本方法中,我們不會像以上方法那樣使用任何額外的變數,但當我們進行遞迴呼叫時,它會儲存所有函式呼叫和堆疊跟蹤,這比單個變數佔用更多的空間。

演算法

按照以下演算法遞迴地反轉字串。

  • 步驟 1 − 如果字串為空,則返回 ‘ ’,即空字串。

  • 步驟 2 − 如果字串不為空,則將第一個字元附加到最後,並對從第一個字元到字串末尾的子字串進行遞迴函式呼叫。

  • 步驟 3 − 透過將字串的第一個字元附加到最後,返回子字串遞迴呼叫的返回值。

使用者可以按照以下語法實現上述演算法。

示例

在以下示例中,我們實現了遞迴方法來反轉字串。

<html>
<body>
   <h2> Reverse the string in place in JavaScript.</h2>
   <h4> After reversing the "Hello world!" string using recuersive algortim. </h4>
   <div id="output"> </div>
   <script>
      let output = document.getElementById("output");
      function reverse(string) {
         if (string === "") {
            return "";
         } else {
         return reverse(string.substr(1)) + string[0];
         }
      }
      let result = reverse("Hello world!");
      output.innerHTML = result;
   </script>
</body>
</html>

結論

在本教程中,我們學習了三種不同的反轉字串方法。第一種方法最簡單,只需要兩行程式碼,因為我們使用了內建的 reverse 方法。第二種方法是最好的,因為它佔用最少的記憶體。第三種方法不是很好,因為它會花費更多的時間和空間。

更新於: 2022-07-26

2K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.