左旋字串

2021-08-15 11:18:26 字數 1462 閱讀 9149

題目:實現字串左旋k個字元,如「abcdef」左旋乙個字元,變為「bcdefa」,左旋兩個字元,變為「cdefab」。

分析:首先需考慮左旋的字元個數與字串的長度之間的關係,在本題中,字串長度為6,如果k為7,則相當

於左旋乙個字元,所以,要對k進行處理,得到有效的旋轉次數。

1,方法一(迴圈前移字元)

分析:

旋轉k個字元,首先我們會想到先旋轉乙個字元,然後在對k進行迴圈,實現旋轉k個字元。所以,接下來

要解決的就是如何實現乙個字元的左旋。

可以觀察到,左旋乙個字元,是將後乙個字元依次前移,取代前乙個字元,而最初的第乙個字元取代最後

乙個字元。這樣一次左旋即完成。因為字元前移的過程中會將第乙個字元取代,使之失效,所以,首先要將第

乙個字元儲存起來,再對其他字元一次前移。

**如下:

2.方法二(逆置法)

分析:

假如字串「abcdef」左旋3個字元,變為「defabc」,相當於現將前三個字元進行逆置為cba,再

將其餘字元逆置為fed,此時字串變為「cbafed」,最後將該字串整體逆置,

即為左旋3個字元後的結

果。所以,先進行兩次區域性逆置,在進行一次整體逆置。

**如下:

3.方法三(雙倍窮舉法)

分析:

先構造雙倍字串,在該題中為"abcdefabcdef",若要左旋3個字元,則從第4個字元開始輸出原字

符串長度個字元,即為左旋後的結果。所以,若要左旋k個字元,即從第k+1個字元開始,輸出原字串

長度個字元。該方法可以得到左旋任意個字元後的結果。

**如下:

主函式**:

執行結果如下:

左旋字串

1.問題描述 字串的左旋操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串 abcdefg 和數字2,該函式將返回左旋轉2位得到的結果 cdefgab 來自 劍指offer 2.分析 其實和翻轉單詞順序差不多,我們可以先將前面2位翻轉得到 ba,在將後...

左旋字串

定義字串左旋轉操作 把字串前面的若干個字元移動到字串尾部,如把字串 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...