字串的旋轉

2021-07-23 15:54:55 字數 659 閱讀 9626

題目:給定乙個字串,要求將字串前面的若干個字元移到字串的尾部。例如將字串「abcdef」的前3個字元移到字串的尾部,那麼原字串將變成「defabc」。寫乙個函式實現此功能。

分析與解法

解法一:蠻力移位

//定義乙個指標s指向該字串,然後設該字串的長度為n,那麼,編寫函式leftshiftone(char * s, int n)實現將乙個字元移到字串尾部的功能

void leftshiftone(char * s, int n)

s[n-1] = t;

}//然後再呼叫m次leftshiftone函式,使得字串開頭的m個字元移到字串的尾部void leftrotatestring(char * s, int n , int m)

}

//時間複雜度 o(mn),空間複雜度為o(1)

解法二:三步反轉

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

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

// 時間複雜度o(n),空間複雜度o(1)

字串 字串的旋轉

時間複雜度為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 那麼今天就來說一下字串旋轉中的一些問題 首先說一下簡單的,先用函式...