问题描述:
将字符串中指定部分进行反转传入指定位置的坐标
例如 将123456789 翻转输出为 128765439
注意判空
方式一:转换为char[] 型数组
public static void test(String str, int firstIndex, int endIndex) {
if(str != null){
char[] chars = str.toCharArray();
for (int i = firstIndex, j = endIndex; i < j; i++, j--) {
char temp = chars[j];
chars[j] = chars[i];
chars[i] = temp;
}
System.out.println(chars);
}
}
主要使用到String类的方法toCharArray,将字符串转为 char型数组
方式一:使用String的拼接
public static void test1(String str, int firstIndex, int endIndex) {
//第1部分
String substring = str.substring(0, firstIndex);
System.out.println(substring);
//第2部分
for (int i = endIndex; i >= firstIndex; i--) {
substring += str.charAt(i);
}
String substring1 = str.substring(endIndex + 1, str.length());
substring += substring1;
System.out.println(substring);
}
主要使用到String类的方法substring,将字符串分开处理,然后拼接
方式三:使用StringBuffer/StringBuilder替换String
优化方式二,使用效率较高的StringBuilder public static void test2(String str, int firstIndex, int endIndex) {
StringBuilder stringBuilder = new StringBuilder(str.length());
stringBuilder.append(str.substring(0, firstIndex));
for (int i = endIndex; i >= firstIndex; i--) {
stringBuilder.append(str.charAt(i));
}
stringBuilder.append(str.substring(endIndex + 1, str.length()));
System.out.println(stringBuilder.toString());
}
第一步初始化指定长度的StringBuilder ,而后还是如上分开处理字符串,使用到了append方法,效率大于String的直接拼接