字串的旋轉

2021-07-15 15:18:46 字數 813 閱讀 8007

這種題目的描述一般是這樣的:將一字串的前幾個字元移到這個字串後面去。

常規的思路是,寫乙個將首字元移到末尾的函式,然後呼叫n次即可。但比較快捷的方法是,三步反轉。

所謂三步反轉,即將乙個字串分割成幾個部分,每個部分分別反轉,然後對整個字串進行整體反轉。

例子:單詞翻轉

輸入乙個英文句子,翻轉句子中單詞的順序。要求單詞內的字元的順序不變,句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如,若輸入「i am s student.」, 則輸出"student. a am i".

我們運用之前講過的三步反轉法,以空格作為分割的界限。

下面我在用char陣列來做一遍:

#include using namespace std;

void reversestring(char *s,int from,int to)

}int main(){

char c[100];

fgets(c,100,stdin);

int start = 0;

for(int i=0;i

字串 字串的旋轉

時間複雜度為o m n 空間複雜度為o 1 include include include void leftshiftone char str,int n void leftrotatestring char str,int n,int m int main 輸出 before rotate ab...

字串旋轉

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

字串旋轉

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