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)。

更新於:2024年8月16日

883 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告