左旋轉字串

2021-08-03 17:33:04 字數 722 閱讀 1901

定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾 部,如把字串 abcdef 左旋轉 2 位得到字串 cdefab。請實現字串左旋轉的 函式,要求對長度為 n 的字串操作的時間複雜度為 o(n),空間複雜度為 o(1)。
將乙個字串分成兩部分,x 和 y 兩個部分,在字串上定義反轉的操作 x^t, 即把 x 的所有字元反轉(如,x=」abc」,那麼 x^t=」cba」),那麼我們可以得到 下面的結論:(x^ty^t)^t=yx。顯然我們這就可以轉化為字串的反轉的問題了。不是麼?ok,就拿 abcdef 這個例子來說,若要讓 def 翻轉到 abc 的前頭,那 麼只要按下述 3 個步驟操作即可:

1、首先分為倆部分,x:abc,y:def;

2、x->x^t,abc->cba, y->y^t,def->fed。

3、(x^ty^t)^t=yx,cbafed->defabc,即整個翻轉。

function

reversestring

(&$str, $from, $to)

}function

rotatestring

(&$str, $n, $m)

$str = 'abcdef';

rotatestring($str, 6, 2);

echo

$str;

左旋轉字串

題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...

左旋轉字串

package com.string 旋轉字串 q 26 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 public cla...

左旋轉字串

如abc,左旋1得到bca,左旋2得到cab o n k 的演算法 include using namespace std include include include include include include include include include include int main...