旋轉字串

2021-08-04 08:48:00 字數 1162 閱讀 4685

給定乙個字元型別的陣列 chas 和乙個整數 size,請把大小為 size 的左半區整

體移到右半區,右半區整體移到左邊。

例如,如果把 chas 看作字串為"abcde",size=3,調整成"deabc"。

如果 chas 長度為 n,兩道題都要求時間複雜度為 o(n),額外空間複雜度為 o(1)。

兩種解決辦法:一種是分別逆序,再整體逆序,例如"abcde" -> "cbaed" -> "deabc"

另一種是分別擷取,例如"abcde" -> "decab" -> "debac" -> "deabc"

public static void rotateword(char chas)

int l = -1;

int r = -1;

for(int i = 0; i < chas.length; i++)

if(l != -1 && r != -1) }}

public static void reverse(char chas, int start, int end)

}public static void rotate1(char chas, int size)

reverse(chas, 0, size - 1);

reverse(chas, size, chas.length - 1);

reverse(chas, 0, chas.length - 1);

}public static void rotate2(char chas, int size)

int start = 0;

int end = chas.length - 1;

int lpart = size;

int rpart = chas.length - size;

int s = math.min(lpart, rpart);

int d = lpart - rpart;

while(true)else if(d > 0)else

s = math.min(lpart, rpart);

d = lpart - rpart; }}

public static void exchange(char chas, int start, int end, int size)

}

字串旋轉

問題 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef前2位字元移到後面得到字串cdefab。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 看到大多數的帖子都是進行三次旋轉 如 個人感覺這思路確實比較新穎,但是總感覺有點麻煩了,個人思路如下 include inclu...

字串旋轉

字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。例如 aabcd左旋乙個字元得到abcda aabcd左旋兩個字元得到bcdaa 同理字串右旋操作 aabcd右旋乙個字元得到daabc aabcd右旋兩個字元得到cdaab 那麼今天就來說一下字串旋轉中的一些問題 首先說一下簡單的,先用函式...

旋轉字串

給定乙個字串和乙個偏移量,根據偏移量旋轉字串 從左向右旋轉 樣例對於字串 abcdefg offset 0 abcdefg offset 1 gabcdef offset 2 fgabcde offset 3 efgabcd 挑戰 在陣列上原地旋轉,使用o 1 的額外空間 解題思路 這次的思路和旋轉...