1.問題描述
字串的左旋操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串"abcdefg"和數字2,該函式將返回左旋轉2位得到的結果「cdefgab」。(來自《劍指offer》)
2.分析
其實和翻轉單詞順序差不多,我們可以先將前面2位翻轉得到 ba,在將後面5位翻轉得到 gfedc ,然後再將整個字串翻轉得到 cdefgab。
3.**
void reverse(char* begin,char* end)
while (begin < end)
}void leftrotatestr(char* str,int num,int length)
char *begin = str;
char *end = str + length - 1;
char *aheadtail = str + num - 1;
char *behindstart = str + num;
reverse(begin, aheadtail);
reverse(behindstart, end);
reverse(begin, end);
}
左旋字串
定義字串左旋轉操作 把字串前面的若干個字元移動到字串尾部,如把字串 abcdef 左旋轉 2位得到字串 cdefab 請實現字串左旋轉的函式,要求對長度為 n 的字串操作的時間複雜度為 o n 空間複雜度為 o 1 author administrator public class leftshif...
左旋字串
題目要求 實現乙個函式,可以左旋字串中的k個字元。右旋字串同理 例如 abcde左旋兩個字串得到cdeab 如下 編譯環境為vs2013 define crt secure no warnings 1 include include include include 三步翻轉法 void revers...
左旋字串
題目 實現字串左旋k個字元,如 abcdef 左旋乙個字元,變為 bcdefa 左旋兩個字元,變為 cdefab 分析 首先需考慮左旋的字元個數與字串的長度之間的關係,在本題中,字串長度為6,如果k為7,則相當 於左旋乙個字元,所以,要對k進行處理,得到有效的旋轉次數。1,方法一 迴圈前移字元 分析...