字串的旋轉

2021-07-13 05:49:17 字數 849 閱讀 6492

最近開始讀july的程式設計之法(面試和演算法心得),開始把裡面的小例子與與其中小練習題拿出來與大家分享

題目描述:

給定乙個字串,要求將字串前面的若干字元轉移到字串的尾部。例如,將字串「abcdef」的前3個字串』a」b」c』移到字串的尾部,那麼,原字串將變為「defabc」。

解法一:蠻力移位(將字元乙個個移到最後,此處省略)

解法二:三步翻轉

三個步驟:

(1)將原字串分為x和y兩個部分,其中x為abc,y為def

(2)將x的字串進行翻轉,再將y的字串進行翻轉

(3)整體翻轉

參考**

#include 

#include

void reversestring(char* s,int

from,int to)

}int main()

一開始,將s設定成指標,每次都會導致程式崩潰,才想起來指標是靜態變數,將s改為乙個大陣列即解決問題。

舉一反三之單詞翻轉

題目要求:

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

#include 

#include

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

}void reverseword(char *s)

}}int main()

字串 字串的旋轉

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