将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
代码实现
方式一:
先将字符串转成char[]
数组,然后for
循环反转指定范围的元素,最后将char[]
数组再转成字符串
public static String reverseStr(String s, int start, int end){
char[] chars = s.toCharArray();
return reverseArray(chars, start, end);
}
public static String reverseArray(char[] chars, int start, int end){
for (int i = start, j = end; i < j; i++, j--) {
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
return new String(chars);
}
@Test
public void test2(){
String s1 = "abcdefg";
System.out.println(reverseStr(s1,2,5));
}
方式二:
使用subString()
方法将字符串分割成三部分,反转前一部分,反转部分、反转后一部分。然后进行字符串的拼接。
public String reverseStr1(String str, int start, int end){
//反转前一部分
String newStr = str.substring(0, start);
//反转部分
for (int i = end; i >= start; i--) {
newStr += str.charAt(i);
}
//反转后一部分
newStr += str.substring(end + 1);
return newStr;
}
方式三:
使用StringBuilder
类,效率比String
高。
public String reverseStr2(String str, int start, int end){
//反转前一部分
StringBuilder builder = new StringBuilder(str.length());
builder.append(str.substring(0,start));
//反转部分
for (int i = end; i >= start; i--) {
builder.append(str.charAt(i));
}
//反转后一部分
builder.append(str.substring(end + 1));
return builder.toString();
}