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