演算法 左旋轉字串

2021-09-29 11:54:35 字數 1379 閱讀 6126

對於乙個給定的字串行 s,把其迴圈左移 n 位後的序列輸出。例如字串行 s=」abcdef」,輸出迴圈左移3位後的結果,即「defabc」

字串 s 為abcdef,n=3,設x=abcy=def,原字串可以表示成xy。此時用t表示翻轉,x的翻轉為xt,即xt=cba,同理yt=fed,那麼yx=(xtyt)t,三次翻轉後可得結果

public string leftrotatestring

(string str, int n)

char[

] chars = str.

tochararray()

;reverse

(chars,

0, n -1)

;reverse

(chars, n, chars.length -1)

;reverse

(chars,

0, chars.length -1)

;return

newstring

(chars);}

public

void

reverse

(char[

] chars, int start, int end)

}

使用佇列作為輔助結構,利用佇列先進先出的特性完成字串左移。對於字串abcdef,n=3,則佇列從左到右變化如下:

fedcba-> cbafed-> defabc

public string leftrotatestring

(string str, int n)

queue q =

newarrayblockingqueue

(str.

length()

);char[

] a = str.

tochararray()

; int len = a.length;

for(int i =

0; i < len; i++

)for

(int j =

0; j < n; j++

) stringbuilder sb =

newstringbuilder()

;for

(int k =

0; k < len; k++

)return sb.

tostring()

;}

演算法十二 左旋轉字串

題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 演算法思路 把字串看做由兩段組成,記作xy,題目的意思是要求出yx。記r x 為x字串旋轉...

演算法題 左旋轉字串

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

演算法題解 左旋轉字串

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