左旋轉字串

2021-09-25 22:33:53 字數 1622 閱讀 5142

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

思路一

可使用n分組反轉思想實現迴圈左移功能:設迴圈左移位數為n,字串行長度為len,則可分為(0,n-1) (n,len-1) (0,len-1)

(for int i =0,j=n-1,i思路二迴圈左移:將左移字元移動字串末尾;

使用什麼資料結構來描述該問題

字元陣列,陣列有下標,操作比較簡單方便,缺點,每次操作需要移動陣列內左右元素;

鍊錶:將移出的結點作為新的結點插入到表尾;

初始化鍊錶

//初始化鍊錶

link *init(link *head,char data)

迴圈左移

/*迴圈左移 */

link *leftmove(link *phead)

//尾結點指標指向左移結點

tail->next = nodemov;

//頭結點指向左移結點的下乙個接地點

phead->next = nodemov->next;

// 左移結點變成新的尾結點

nodemov->next = null;

return phead;

}

完整**實現

#include#includetypedef struct linklink;

link *init(link *head,char data);

//link *leftmove();

link *leftmove(link *tmp);

link *print(link *);

int main() }

//初始化鍊錶

link *init(link *head,char data)

/*迴圈左移 */

link *leftmove(link *phead)

//尾結點指標指向左移結點

tail->next = nodemov;

//頭結點指向左移結點的下乙個接地點

phead->next = nodemov->next;

// 左移結點變成新的尾結點

左旋轉字串

題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...

左旋轉字串

package com.string 旋轉字串 q 26 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 public cla...

左旋轉字串

如abc,左旋1得到bca,左旋2得到cab o n k 的演算法 include using namespace std include include include include include include include include include include int main...