旋轉字串問題

2021-07-01 22:42:35 字數 702 閱讀 6923

問題

給定乙個字串,要求把字串前面的若干個字元移動到字串的尾部,如把字串「abcdef」前面的2個字元』a』和』b』移動到字串的尾部,使得原字串變成字串「cdefab」。請寫乙個函式完成此功能,要求對長度為n的字串操作的時間複雜度為 o(n),空間複雜度為 o(1)。

剛開始遇到這個問題,很自然的就是想要使用乙個char乙個char的移動方法,也就是簡稱為暴力法,**如下:

#includeusing namespace std;

void leftshiftone(char* ptr, int n)

}void leftrotatestring(char *ptr, int n, int m)

int main()

至於如何證明這種方法是有效的,可以參考july在文章中的表述:

該題的變異題目:編寫程式,在原字串中把字串尾部的m個字元移動到字串的頭部,要求:長度為n的字串操作時間複雜度為o(n),空間複雜度為o(1)。 例如,原字串為」ilovebaofeng」,m=7,輸出結果為:」baofengilove」。

這個題目的解法跟三步翻轉法一模一樣,只不過是變一下引數即可,具體不詳講,直接上**:

void rightrotatestring(char *ptr, int n, int m)

字串旋轉問題

有一道關於字串旋轉的題比較有意思,拿來和大家分享一下,題目是這樣的 實現乙個函式,可以左旋字串中的k個字元。例如 aabcd左旋乙個字元得到abcda,aabcd左旋兩個字元得到bcdaa 現在就來講講這個三步旋轉法是怎麼實現左旋的,先假設 k 的值為 1 1 把原字串整體逆序 dcbaa 2 把左...

字串旋轉

問題 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef前2位字元移到後面得到字串cdefab。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 看到大多數的帖子都是進行三次旋轉 如 個人感覺這思路確實比較新穎,但是總感覺有點麻煩了,個人思路如下 include inclu...

字串旋轉

字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。例如 aabcd左旋乙個字元得到abcda aabcd左旋兩個字元得到bcdaa 同理字串右旋操作 aabcd右旋乙個字元得到daabc aabcd右旋兩個字元得到cdaab 那麼今天就來說一下字串旋轉中的一些問題 首先說一下簡單的,先用函式...