字符串左旋轉是指從前綴側逆時針移動給定數量的字符并將其添加到后綴側。類似地,字符串的右旋轉意味著給定字符串的字符順時針移動,但與左旋轉正好相反,并且從后綴中選取給定數量的字符并將其添加到字符串的前綴中。在本文中,我們將實現給定字符串的左旋轉和右旋轉的 JavaScript 程序。
問題簡介
在這個問題中,我們得到一個字符串和一個數字。該數字表示我們必須向任一方向旋轉繩子多少次。正如我們對順時針和逆時針旋轉有所了解意味著從給定字符串中從起始或前綴側或從結束或后綴側獲取一些字符,然后從中刪除并添加到字符串的末尾。
字符串的長度和給定字符串中字符的頻率不會改變,只是當前字符串的排列發生變化。
例如,給定一個字符串:apple
那么給定字符串的左旋轉將如下 –
蘋果
請
leapp
eappl
蘋果
我們可以看到給定字符串的第五次旋轉與當前字符串相同,因此不可能再進一步旋轉。
給定字符串的右旋轉將如下 –
eappl
leapp
請
普利亞
蘋果
我們可以看到給定字符串的第 5 次右旋轉與初始字符串相同,因此如果我們進一步旋轉字符串,不會再出現不同的結果。
從上面的例子中,我們可以得出結論,通過將字符串向左或右側旋轉其長度大小的次數,最終將得到與初始字符串相同的字符串。因此,如果給出的旋轉次數大于字符串的長度,那么我們可以采用模式,它會給出完全相同的答案。
方法
我們已經了解了字符串左右旋轉的基本示例,現在讓我們逐步進行討論,以更好地理解之后將要實現的代碼。
首先,我們將在一個變量中獲取給定的字符串,并將所需的旋轉次數存儲在另一個變量中。我們也可以打印它們以獲得更好的比較。
我們將創建兩個函數,第一個用于左旋轉,第二個用于字符串的右旋轉。
對于每個函數,我們將傳遞給定的字符串和旋轉變量的數量作為參數。
在左旋轉函數中,我們將獲取包含最后 k 個元素和第二個剩余元素的兩個子字符串,并交換它們的位置。
在右旋轉函數中,我們將得到包含第一個 k 元素和第二個包含剩余元素的兩個子字符串,并交換它們的位置。
示例
// function for left rotation function left_rotation(str,k){ // getting prefix elements and remaining elements // switiching there place var new_str = str.substr(k) + str.substring(0,k); // printing the rotated string console.log("String after kth left rotation is: " + new_str); } // function for right rotation function right_rotation(str,k){ // getting suffix elements and remaining elements // switiching there place var new_str = str.substr(str.length - k) + str.substring(0,str.length-k); // printing the rotated string console.log("String after kth rigth rotation is: " + new_str); } // given string var str = "apple" var k = 2 // 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)
登錄后復制
注意
在上面的程序中,我們給出的“k”或旋轉次數小于字符串的大小,如果 k 大于字符串的大小,那么上面的代碼將給出錯誤,但如下我們在介紹部分已經看到,字符串長度重復多次后的旋轉,可以通過給定字符串長度獲取當前數字的眾數來計算,為了安全起見,我們總是可以這樣做 –
k = k % (str.length)
登錄后復制
這里,str是給定的字符串。
時間和空間復雜度
上述代碼的時間復雜度為 O(N),其中 N 是給定字符串的大小。在上面的代碼中,我們只是獲取字符串字符并以不同的方式分解和添加它們,使得時間復雜度呈線性。
上面代碼的空間復雜度是O(1),因為我們沒有使用任何額外的空間,只是將一個字符串存儲到另一個字符串中,該空間用于答案,所以沒有使用額外的空間。 p>
結論
在本教程中,我們實現了給定字符串的左旋轉和右旋轉的 JavaScript 程序。字符串左旋轉意味著逆時針移動給定數量的字符,字符串右旋轉意味著順時針移動給定數量的字符。我們使用了子字符串的概念,通過子字符串來分解字符串并在另一側添加后綴或前綴。給定程序的時間復雜度為 O(N),空間復雜度為 O(1)。
以上就是用于左旋轉和右旋轉字符串的 JavaScript 程序的詳細內容,更多請關注www.92cms.cn其它相關文章!