迴圈左移字串

2021-07-10 20:26:43 字數 728 閱讀 9605

題目

字串的左旋轉操作是把字串前面的若干字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串「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 可以使用以下語句實現非...