面試題 旋轉字串

2022-02-17 16:43:06 字數 558 閱讀 5800

題目:定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o(n),輔助記憶體為o(1)。

思路:將字串看做ab兩部分,將a反轉,再將b反轉,最後將反轉後的a+反轉後的b一起反轉就ok了。

#include

<

iostream

>

#include

<

assert.h

>

using

namespace

std;

const

intmax

=100;//

反轉從start到end的字串s

void

reversal(

intstart,

intend,

char*s)

}int

main()

return0;

}

面試題之O n 內旋轉字串

樣例 字串 abcd1234 左移3位結果為 234abcd1 k 左移位數 l 字串長度 方案1 暴力 o k l 可以每次將陣列中的元素左移一位,迴圈k次。abcd1234 4abcd123 34abcd12 234abcd1 演算法複雜度為o k l 方案2 暴力 公式變形 o n 大家開始可...

面試題42 左旋轉字串

題目 定義乙個函式實現字串左旋轉操作的功能。字串的左旋轉操作就是把字串前面的若干個字元轉移到字串的 尾部。比如輸入字串 abcdefg 和2,該函式將返回左旋轉2位得到的結果 cdefgab include include using namespace std 翻轉字串 void reverse ...

字串面試題系列之三 左旋轉字串

在這裡說明一下,本系列文章所提供的演算法均在federa 8 系統上編譯通過並且編譯通過。如果有問題或者紕漏或者有好的建議更或者有更好的演算法,請不吝賜教。言歸正傳,這是字串的第三個演算法叫左旋字串。左旋字串,咋一看也許不 太明白是什麼意思。其實有點類似於迴圈左移的概念。字串的第乙個字元移動到字串末...