微軟演算法面試 19 左旋字串

2021-10-18 11:44:32 字數 597 閱讀 6294

題目:

定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。

例如把字串"abcdef" 左旋2位 得到字串「cdefab"。請實現字串左旋轉的函式。

要求時間對長度n的字串操作的複雜度位o(n),輔助記憶體為o(1).

分析:這題的難點是輔助記憶體只能只用o(1),相當於只能進行字串中字元的替換操作,如果需要移動字串,則需要mn次替換操作,這樣複雜度也上來了,o(nn).

只能想技巧了。

實現如下:

#include

#include

using

namespace std;

void

reverse

(char

* str,

int i,

int j)

}void

leftrotate

(char

* srcstr,

int k)

intmain()

輸出結果如下:

string: abcdef

rotate string, 2: cdefab

微軟面試100題 左旋字串

定義字串的左旋操作 將字串前面的若干個字元移動到字串的尾部 如 abcde 左旋2位 cdeab 思路 ab ba cde edc baedc cdeab 分3部分反轉 public static void leftstr 1 stringbuilder str,int k private stat...

左旋字串演算法

原題來自 programming pearls 記錄在此作為讀書筆記。指定長度為n個字元的字串,實現將其左旋i位的演算法。如abcdefgh左旋3位為defghabc。記原字串為s,將其分為兩個子串,s a b。記len x 表示為字串x的長度。其中a的長度為i,b的長度為len s i。定義 為字...

微軟演算法100題26 左旋轉字串

26.左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef 左旋轉2 位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n 的字串操作的複雜度為o n 輔助記憶體為o 1 思路 先反轉整個字串 fedcba 在分別反轉各個子字串 fedc...