在str上,如果认为str[L…M]是左部分,str[M+1…R]是有部分
请原地调整,只能用有限个变量,左->右 右->左
假设str=“abcdef”
左半部分字符串个数leftsize = 4
public class Code01_RotateString {
public static void main(String[] args) {
String s = "abcdef";
int leftSize = 4;
String s1 = rotate1(s, leftSize);
System.out.println(s1);
}
/*
在str上,如果认为str[L..M]是左部分,str[M+1..R]是有部分
请原地调整,只能用有限个变量,左->右 右->左
*/
public static String rotate1(String s, int leftSize){
if(leftSize<=0||leftSize>=s.length()){
return s;
}
return process1(s.toCharArray(),0,leftSize-1,s.length()-1);
}
private static String process1(char[] str, int L, int M, int R) {
reverse(str,L,M);
reverse(str,M+1,R);
reverse(str,L,R);
return String.valueOf(str);
}
public static void reverse(char[] str, int L,int R){
while(L < R){
char temp = str[L];
str[L++] = str[R];
str[R--] = temp;
}
}
}