題目描述
匯編語言中有一種移位指令叫做循環(huán)左移(ROL),現(xiàn)在有個(gè)簡(jiǎn)單的任務(wù),就是用字符串模擬這個(gè)指令的運(yùn)算結(jié)果。對(duì)于一個(gè)給定的字符序列S伤塌,請(qǐng)你把其循環(huán)左移K位后的序列輸出。例如轧铁,字符序列S=”abcXYZdef”,要求輸出循環(huán)左移3位后的結(jié)果每聪,即“XYZdefabc”。是不是很簡(jiǎn)單齿风?OK药薯,搞定它!
實(shí)現(xiàn)過程
- 這個(gè)過程相當(dāng)于一個(gè)循環(huán)隊(duì)列救斑,那么我們只需要求得最小的移動(dòng)后的結(jié)果即可童本,即是需要將傳入?yún)?shù)n對(duì)字符串長(zhǎng)度取余,然后再對(duì)字符串進(jìn)行操作
- java中String字符串提供了一個(gè)substring的操作可以切分字符串脸候,那么這道題直接調(diào)用這個(gè)方法穷娱,然后就對(duì)應(yīng)的兩段值切分返回相加即可得到結(jié)果
- 如果是其他字符串理論上應(yīng)該是循環(huán)k的長(zhǎng)度前面的字符串不挺的往后加,然后前面的字符串刪除也可以得到結(jié)果
JAVA源代碼
public class Solution {
public String LeftRotateString(String str,int n) {
if (str==null || str.length()==0 || n<=0) return str;
int length = str.length();
n = n%length;
if (n==length) return str;
str = str.substring(n, length) + str.substring(0, n);
return str;
}
}