左旋轉字串新思路

2021-06-09 00:16:12 字數 638 閱讀 2433

題目描述:定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。

如把字串abcdef左旋轉2位得到字串cdefab。

請實現字串左旋轉的函式,要求對長度為n的字串操作的時間複雜度為o(n),空間複雜度為o(1)。

ps:該題目來自july的程式設計師程式設計藝術第一章、左旋轉字串章節,但該題的解法有新穎之處。

在july的部落格的思路一中,提到三次翻轉法比較容易理解,當然,也是大多數人都比較容易接受的方法,但是該方法需要交換次數為2n次,其中n為字串的長度。

當然july提出的思路二,可以達到交換n次的優化,但是其將尾部專門劃分出來用乙個while迴圈處理,我覺得不夠簡潔。本人方法如下,當然也是借鑑july的思路二的靈感。

**如下:

void leftrotatestr(char* psrc, int m)

}}

測試**如下:

int main()

左旋轉字串

題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串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...