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