一、题目:将字符串指定部分反转,如"abcdefg"反转后为"abfedcg"
二、实现
- 方式一
1.把指定字符串先转化为一个char[]数组;
2.对需要反转的部分,进行数组元素遍历+反转;
3.将反转后的char[]数组再转换为String。
- 方式二
1.声明一个StringBuffer变量sb1;
2.把不需要反转的第一部分直接append到sb1;
3.把需要反转的第二部分按照倒序遍历,依次append到sb1;
4.把不需要反转的第三部分直接append到sb1;
5.把StringBuffer变量sb1转换为String对象返回。
- 方式三
1.声明一个StringBuilder变量sb2;
2.把不需要反转的第一部分直接append到sb2;
3.把需要反转的第二部分,先变成StringBuilder后使用reverse(),再append到sb2;
4.把不需要反转的第三部分直接append到sb2;
5.把StringBuilder变量sb2转换为String对象返回。
public class StringTest1 {
//方式一:
public String reverseTest(String str,int startIndex,int endIndex){
if(str != null){
char[] c1 = str.toCharArray();
for(int i = startIndex,j=endIndex-1; i < j; i++,j--){
char temp = c1[i];
c1[i] =c1[j];
c1[j] = temp;
}
return new String(c1);
}
return null;
}
//方式二:
public String reverseTest1(String str, int startIndex, int endIndex){
if(str != null){
//第一部分
StringBuffer sb1 = new StringBuffer();
sb1.append(str.substring(0,startIndex));
//第二部分
for(int i = endIndex-1;i>=startIndex;i--){
sb1.append(str.charAt(i));
}
//第三部分
sb1.append(str.substring(endIndex));
return new String(sb1);
}else {
return null;
}
}
//方式三
public String reverseTest2(String str, int startIndex, int endIndex){
if(str != null){
StringBuilder sb2 = new StringBuilder();
//第一部分
sb2.append(str.substring(0,startIndex));
//第二部分
sb2.append(new StringBuilder(str.substring(startIndex, endIndex)).reverse());
//第三部分
sb2.append(str.substring(endIndex));
return new String(sb2);
}else {
return null;
}
}
public static void main(String[] args) {
String str = "abcdefg";
StringTest1 t1 = new StringTest1();
String s = t1.reverseTest(str, 2, 6);
System.out.println(s);
}
}
网友评论