劍指offer 解題系列(44) 左旋轉字串

2021-08-02 08:11:16 字數 765 閱讀 5610

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

分析

對於原本需要左移動的字串 "abcxyzdef ",如果左移動3位,就變成 :  "xyzdef" + "abc", 則

設:n=3,n=9(字串總長度)

可以遍歷一遍陣列,使用兩個ind1=0,ind2,乙個ind1指向開頭,乙個ind2指向移動後的第乙個開頭字元。

ind1保持不變,ind2每次減去 n(n=3),如果n<0,n = n+n。

原本ind2位置的數字被置換到0位置,則ind2的目標位置是在ind2-n。

在n不被n整除情況下,可以最終遍歷完陣列,但是n會被n整除的情況下則無法完成遍歷

但是為了防止n會被n整除,可以把n減去1

**實現

string leftrotatestring(string str, int n)

int position_now = 0;

int position_target = -n+n;

while(position_now!=position_target){

swap(str[position_now],str[position_target]);

//cout<

劍指offer 左旋字串

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

劍指offer 左旋字串

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串 abcdefg 和數字2,該函式將返回左旋轉兩位得到的結果 cdefgab 示例 1 輸入 s abcdefg k 2 輸出 cdefgab 示例 2 輸入 s lrloseumgh k...

劍指offer 解題系列(17) 樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分析 b是a的子結構分為幾種情況 1 b是空或者a是空,直接false 2 b的根節點與a的根節點相等,而且左右子樹都相同 3 b的根節點和a不等,但是a的左子樹或者右子樹和b相同 所以可以先設定遞迴函式為判斷是...