JavaScript 字串左旋轉和右旋轉程式
給定一個字串和一個整數值。整數表示我們必須將字串向左和向右旋轉多少次。在左旋轉中,將字串字元從字首側逆時針移動,並將其新增到字尾側。類似地,在右旋轉中,將給定字串的字元順時針移動,並從字尾中選取字元,並將其新增到字串的字首。
在本文中,我們將實現用於給定字串的左旋轉和右旋轉的JavaScript程式。給定字串的長度和字串中字元的頻率不會改變,只會改變當前字串的排列。
示例場景 1
Input 1: String str = "apple"; Input 2: int k = 4; Output: left_rotation = "eappl";
第 1 次旋轉:pplea,第 2 次旋轉:pleap,第 3 次旋轉:leapp,第 4 次旋轉:eappl
示例場景 2
Input 1: String str = "apple"; Input 2: int k = 4; Output: right_rotation = "pplea";
第 1 次旋轉:eappl,第 2 次旋轉:leapp,第 3 次旋轉:pleap,第 4 次旋轉:pplea
從以上示例場景可以得出結論,透過將字串向左或向右旋轉其長度大小的次數最終將帶來與初始字串相同的字串。因此,如果給定的旋轉次數超過字串的長度,則我們可以對其取模,它將給出完全相同的答案。
JavaScript 中的字串左旋轉和右旋轉
讓我們看看我們將在 JavaScript 程式中遵循的步驟來解決給定的問題 -
首先,我們將獲取給定字串並將其儲存在一個變數中,並將所需的旋轉次數儲存在另一個變數中。我們也可以列印它們以獲得更好的比較。
我們將建立兩個函式,第一個用於字串的左旋轉,第二個用於字串的右旋轉。
對於每個函式,我們將傳遞給定的字串和旋轉次數變數作為引數。
在左旋轉函式中,我們將獲取包含最後 k 個元素的兩個子字串,第二個包含其餘元素,並交換它們的位置。
在右旋轉函式中,我們將獲取包含前 k 個元素的兩個子字串,第二個包含其餘元素,並交換它們的位置。
示例
以下是執行字串的左旋轉和右旋轉的 JavaScript 程式 -
// function for left rotation function left_rotation(str, k) { // Adjust k to be within the length of the string k = k % str.length; var new_str = str.substr(k) + str.substring(0, k); console.log("String after kth left rotation is: " + new_str); } // function for right rotation function right_rotation(str, k) { // Adjust k to be within the length of the string k = k % str.length; var new_str = str.substr(str.length - k) + str.substring(0, str.length - k); console.log("String after kth right rotation is: " + new_str); } // given string var str = "apple"; var k = 6; // printing the given string console.log("The given string is: " + str); // getting left rotation left_rotation(str, k); // getting right rotation right_rotation(str, k);
以下是上述程式碼的輸出 -
The given string is: apple String after kth left rotation is: pplea String after kth right rotation is: eappl
時間和空間複雜度
上述程式碼的時間複雜度為O(N),其中 N 是給定字串的大小。在上述程式碼中,我們只是獲取字串字元並以不同的方式將其拆分和新增,這使得時間複雜度為線性。
上述程式碼的空間複雜度為O(1),因為我們沒有使用任何額外的空間,只是將一個字串儲存到另一個字串中,該空間用於答案,因此沒有使用額外的空間。
結論
在本文中,我們實現了用於給定字串的左旋轉和右旋轉的 JavaScript 程式。字串的左旋轉表示給定數量的字元的逆時針移動,字串的右旋轉表示給定數量的字元的順時針移動。我們使用了子字串的概念,透過該概念,我們正在拆分字串並在另一側新增字尾或字首。給定程式的時間複雜度為 O(N),空間複雜度為 O(1)。