組合語言中有一種移位指令叫做迴圈左移(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();
publicclass
solution
private
void reverse(char chars, int start, int
end)
}}
publicclass
solution
//版本2:先分別翻轉兩個子字串,再對整個字串翻轉
public string leftrotatestring(string str,int
n) }
publicclass
solution
}
publicclass
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個字串進行翻轉...