最近開始讀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 那麼今天就來說一下字串旋轉中的一些問題 首先說一下簡單的,先用函式...