JavaScript 中字串的迴圈左移和右移


該問題的核心目標是在 Javascript 中對字串進行迴圈移位操作。迴圈移位可以是左移或右移。並在 Javascript 中實現此解決方案。

理解問題

眼前的問題是利用 Javascript 的功能對字串進行迴圈左移和右移。迴圈移位意味著我們必須以迴圈的方式移動給定字串的字元,其中要移位的字元超出字串的邊界,並且應該在另一端重新出現。

給定問題的邏輯

為了解決這個問題,我們將實現兩個函式。第一個函式將字元向左移動,第二個函式將字元向右移動。這兩個函式都將字串和要移動的位置數作為輸入。

第一個函式將透過對給定位置與字串長度取模來計算有效的位置數。然後,我們將使用 substring 方法提取字串的一部分,並將從開頭到計算位置的字串部分連線起來。

第二個函式也將執行與第一個函式相同的步驟,但在此函式中,我們將以相反的順序提取子字串。因此,我們將藉助模數計算有效的位置數。最後,將該部分與從開頭到字串長度與計算位置之差的字串連線起來。

演算法

步驟 1:正如我們上面討論的那樣,我們將分別建立兩個函式。因此,在此步驟中,我們將定義第一個函式並將其命名為 shiftLeft,此函式接受兩個引數,第一個是字串,第二個是位置。字串是要執行此任務的輸入字串,位置是有效的位置數。

步驟 2:定義函式後,我們將透過對給定位置與給定字串的長度取模來計算位置數。

步驟 3:因此,在此階段,我們將使用 substring 方法提取字串的一部分,該部分將從計算出的位置開始到字串的末尾。並將其與從開頭到計算位置的字串部分連線起來。

步驟 4:定義第二個函式以將字串的字元向右移動。與上面的函式類似,此函式也接受兩個引數字串和位置。

步驟 5:由於此函式也遵循類似的過程,但在此函式中,我們將以相反的順序提取字串。因此,我們將藉助模數計算有效的位置數。

步驟 6:然後,我們將提取從字串長度與計算位置之差到字串末尾的字串部分。

步驟 7:之後,我們將連線從開頭到字串長度與計算位置之差的字串部分。

示例

//Function to do circular shift left
function shiftLeft(str, positions) {
   // handle positions larger than string length
   positions = positions % str.length;
   return str.substring(positions) + str.substring(0, positions);
}

//Function to do circular shift right
function shiftRight(str, positions) {
   // handle positions larger than string length
   positions = positions % str.length;
   return str.substring(str.length - positions) + 
str.substring(0, str.length - positions);
}

const originalStr = 'Hello Tutorials Point';
const leftShifted = shiftLeft(originalStr, 3);
const rightShifted = shiftRight(originalStr, 2);

console.log(leftShifted);
console.log(rightShifted);

輸出

lo Tutorials PointHel
ntHello Tutorials Poi

複雜度

由於我們建立了兩個函式來執行以迴圈方式向左和向右移動字元的任務。這兩個函式的時間複雜度都是 O(n),其中 n 是給定輸入字串的大小。這兩個函式消耗的空間也是 O(n)。因為我們建立了一個長度為 n 的新字串來連線子字串,這需要額外的空間。

結論

我們實現的程式碼已成功地在 Javascript 中將字串的字元以迴圈方式向左和向右移動。時間和空間複雜度是線性的,並且與字串的輸入大小成正比。

更新於: 2023-08-16

1K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.