參考自:
左旋轉字串
* 題目:定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。
* 如把字串abcdef左旋轉2位得到字串cdefab。
* 請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o(n),輔助記憶體為o(1)。
演算法1:
不考慮時間和空間的限制。設移動的位數為k。則迴圈k次,每次移動1位。這樣的空間複雜度是o(1),時間複雜度是o(n*k)。如果k大於n,則o(n^2)。因此,如果k > n,右移k-n之後的陣列序列跟右移k位的結果是一樣的。
演算法2:反轉前k個字元,然後反轉後n-k個字元,最後反轉整個字串。時間複雜度為o(n),空間複雜度為o(1)。
演算法3:每次向右移動k位,最後遞迴。
把乙個規模為n的問題化解為規模為m(m該問題可以遞迴轉化成規模為s1+s2的,方向相反(從右向左)的同乙個問題。隨著遞迴的進行,左右反覆迴盪,直到某一次滿足條件l%s1==0而交換結束。
演算法4:假如不需要源字串反轉,使用acm的做法,輸出k+1到m,把m設為『\0』輸出前k位。
左旋轉字串(字串)
題目描述 組合語言中有一種移位指令叫做迴圈左移 rol 現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s abcxyzdef 要求輸出迴圈左移3位後的結果,即 xyzdefabc 是不是很簡單?ok,搞定它!思路一 pub...
左旋字串
1.問題描述 字串的左旋操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串 abcdefg 和數字2,該函式將返回左旋轉2位得到的結果 cdefgab 來自 劍指offer 2.分析 其實和翻轉單詞順序差不多,我們可以先將前面2位翻轉得到 ba,在將後...
左旋字串
定義字串左旋轉操作 把字串前面的若干個字元移動到字串尾部,如把字串 abcdef 左旋轉 2位得到字串 cdefab 請實現字串左旋轉的函式,要求對長度為 n 的字串操作的時間複雜度為 o n 空間複雜度為 o 1 author administrator public class leftshif...