1.1字符串的旋转
给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部。例如,将字符串 "abcdef" 的前3个字符 'a'、'b' 和 'c'移到字符串的尾部,那么原字符串将变成"defabc"。请写一个函数实现此功能。
解法二:三步反转
package com.programming.test;
/**
*
* @ClassName: Test01_1.java
* @Description:字符串旋转:三步反转
* 时间复杂度O(n) 空间复杂度O(1)
* @author: Henray
* @version:
* @Date: 2018年11月15日
*
*/
public class Test01_2 {
public static void main(String[] args) {
String str = "abcdef";
System.out.println(LeftRotateString(str, 6, 3));
}
// 将from 至 to字符串翻转
public static String ReverseString(String str, int from, int to) {
char[] ch = str.toCharArray();
while (from < to) {
char t = ch[from];
ch[from++] = ch[to];
ch[to--] = t;
}
str = new String(ch);
return str;
}
// 字符串长度为n,移动m个字符串到字符串尾部
public static String LeftRotateString(String s, int n, int m) {
ReverseString(s, 0, m - 1);
ReverseString(s, m, n - 1);
ReverseString(s, 0, n - 1);
return s;
}
}