比如字符串“1234567”(在函数中我用str1表示) ---->"5671234",相当于整体向右平移3个单位(在函数中我用m表示),可以分为以下几步:
ps: "1234"为第一部分,“567”为第二部分,同时为了便于调换位置,我们将字符串转化为数组的形式(在函数中我用str表示)。
1) 将 第一部分中的字符串依次首(在函数中我用go表示)尾(在函数中我用to表示)互换,即“4321”
2) 将第二部分中的字符串同样依次首尾互换,即“765”
3) 将字符串整体依次进行互换,即“5671234”
具体实现如下:
public class test004 {
char tmp;
public void func(char[] str,int go , int to){
for(int x=go,y=to;x
//首尾互换值
tmp =str[x];
str[x]=str[y];
str[y]=tmp;
}
}
public String Func(String str1,int m){
//将字符串转化为数组
char[] str = str1.toCharArray();
//如果m > str.length时,对 m取余
m %= str.length;
//调用func方法,将第一部分反转
func(str,0,str.length -m -1);
//调用func方法,将第二部分反转
func(str,str.length -m,str.length-1);
//调用func方法,将整体反转
func(str,0,str.length -1);
//将str转化为字符串类型并返回
return new String(str);
}
public static void main(String[] args) {
test004 test =new test004();
System.out.print(test.Func("1234567",3));
// System.out.print(new test004().Func("1234567",3));
}
}
运行代码:
5671234