劍指offer 面試題58(2) 左旋轉字串

2021-08-04 22:04:55 字數 886 閱讀 2890

組合語言中有一種移位指令叫做迴圈左移(rol),

現在有個簡單的任務,就是用字串模擬這個指令的運算結果。

對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。

例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。

解法1:

開闢乙個新的陣列來存放左移後會溢位的字串

新陣列: 「abc」

然後將原陣列左移後再將本來會溢位的字串填充在右邊

左移: 「abcxyzdef」 -> 「xyzdefdef」

填充:」xyzdefdef」 -> 「xyzdefabc」

解法2:

假設字串長度為n,分別翻轉字串前k位和後n-k位

「abcxyzdef」 -> 「cbafedzyx」

翻轉整個字串

「xyzdefabc」

這裡使用解法2

public

class

_58_02_leftrotatestring

private

void

reverse(char str, int startindex, int endindex)

}}

public

class _58_02_test

private

static

void

test1()

private

static

void

test2()

private

static

void

test3()

}

劍指offer 面試題58 2 左翻轉單字串

組合語言中有一種移位指令叫做迴圈左移 rol 現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s abcxyzdef 要求輸出迴圈左移3位後的結果,即 xyzdefabc 是不是很簡單?ok,搞定它!有了第58題分析的思路 ...

劍指offer58 (2)左旋轉字串

組合語言中有一種移位指令叫做迴圈左移 rol 現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s abcxyzdef 要求輸出迴圈左移3位後的結果,即 xyzdefabc 是不是很簡單?ok,搞定它!首先要明確一點,長度為6...

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...