如何在 JavaScript 中就地反轉字串?
在本教程中,我們將學習如何在 JavaScript 中就地反轉字串。如何反轉字串是應屆畢業生面試中最常見的問題之一。這是一個簡單的任務,但面試官可能會很狡猾,讓你覺得同樣的問題很難。例如,如果面試官讓你編寫虛擬碼來就地反轉字串,而無需使用額外的空間,你會怎麼做?你應該準備好針對這種棘手的問題給出答案。
有很多方法可以反轉字串。隨著開發人員開發新的邏輯,他們可以構建新的演算法。
在本教程中,我們將看到一些最流行的演算法和方法,透過建立自定義函式和內建方法來反轉字串。
使用 reverse() 方法
對於每個基本操作,JavaScript 都包含內建方法。同樣,它也包含 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 迴圈來反轉字串。在本節中,我們將就地反轉字串。就地反轉意味著無需使用額外的空間或新變數即可反轉字串。在上述方法中,我們建立了 char 陣列,這意味著我們使用了額外的空間。
演算法
使用者可以按照以下演算法使用 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 方法。第二種方法是最好的,因為它佔用最少的記憶體。第三種方法不是很好,因為它會花費更多的時間和空間。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP