題目
字串的左旋轉操作是把字串前面的若干字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串「abcdefg」和陣列2,該函式將返回左旋轉2位得到的結果「cdefgab」。
分析
通過reverse操作:乙個序列abcdefg,如果向左迴圈移動n位,例如2位,則會程式設計(defg)(abc),我們把原序列分成兩部分,a=(abc),b=(defg),原序列為ab,我們要的結果為ba,則可以這麼做:(arbr)r = ((b)r)r((a)r)r=ba
假設原序列有n位,迴圈左移i位的過程如下:
(1)reverse(0,i-1);
(2)reverse(i,n-1);
(3)reverse(1,n-1);
例如原序列:abcdefg,迴圈左移3位:
(1) ba cdefg
(2)ba gfedc
(2) cdefgab
c++**
**就非常簡單了,而且reverse操作非常簡單,效率高也不容易出錯,要記住一點就是stl中的迭代器是左閉右開區間,所以reverse操作的第二個引數需要往後移動一位。
class
solution
};
參考資料
《程式設計珠璣》
字串迴圈左移
問題描述 給定乙個字串s 0.n 1 要求把s的前k個字元移動到s的尾部,如把字串 abcdef 前面的2個字元 a 和 b 移動到字串的尾部,得到新的字串 cdefab 即字串迴圈左移k。演算法分析 把abcdef看成是由x ab和y cdef組成,由矩陣轉稚公式 x y yx,如x ab x b...
字串迴圈左移
給定乙個字串s,要求把s的前k個字元移動到s的尾部,如把字串 abcdef 前面的2個字元 a b 移動到字串的尾部,得到新字串 cdefab 稱作字串迴圈左移k位。輸入乙個字串和乙個非負整數n,要求將字串迴圈左移n次。可以使用以下語句實現字串s的輸入 s str input 可以使用以下語句實現非...
字串迴圈左移
給定乙個字串s,要求把s的前k個字元移動到s的尾部,如把字串 abcdef 前面的2個字元 a b 移動到字串的尾部,得到新字串 cdefab 稱作字串迴圈左移k位。輸入乙個字串和乙個非負整數n,要求將字串迴圈左移n次。可以使用以下語句實現字串s的輸入 s str input 可以使用以下語句實現非...