組合語言中有一種移位指令叫做迴圈左移(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 ...