劍指43 左旋轉字串

2022-06-08 03:39:08 字數 991 閱讀 3420

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

思路1:字串翻轉的應用。左旋轉可以看成是字串翻轉兩次,例子——輸入字串abcdefg,左移2位

第一次翻轉整個字串,讓每個子串行處於合適的位置;例如,abcdefg → gfedcba

第二次翻轉兩個子串行,消除第一次翻轉對每個子串行內部位置的影響。例如上一步得到gfedcba,對兩個子串行分別翻轉,gfedc→cdefg、ba→ab,再合併起來 cdefgab。

note:這兩次翻轉也可以調換順序,第一次分別翻轉兩個子串行,得到bagfedc;第二次翻轉整個字串得到cdefgab。

思路2:擷取字串。

注意:本題的邊界條件!!n 可能 大於字串的長度,因此穩妥起見傳入的 n 先做 n = n % str.length();

public

class

solution

private

void reverse(char chars, int start, int

end)

}}

public

class

solution

//版本2:先分別翻轉兩個子字串,再對整個字串翻轉

public string leftrotatestring(string str,int

n) }

public

class

solution

}

public

class

solution

}

43 劍指offer 左旋轉字串

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

劍指offer 43 左旋轉字串

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

劍指offer43左旋轉字串

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