package time_3_30;
/*
将字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为“abfedcg”
*/
public class StringDemo {
public static void main(String[] args) {
String str = new String("abcdefghi");
Reverse rev = new Reverse();
String str2 = rev.reverse(str,1,6); //反转字符串str[1,6)位置上的字符
System.out.println(str2);
Reverse1 rev1 = new Reverse1();
String str3 = rev1.reverse(str2,1,6);
System.out.println(str3);
}
}
//方式一:将String转换为数组再反转
class Reverse{
public String reverse(String str, int start, int end){
if(str != null && str.length() != 0){
char[] arr = str.toCharArray(); //将引用类型转换为数组;
for(int x = start,y = end; x <= y/2; x++){
char temp = arr[x];
arr[x] = arr[y-x];
arr[y-x] = temp;
}
return new String(arr); //返回新的字符串
}
return null;
}
}
//方式二:将需要反转的字符串反转,不需要反转的不操作
class Reverse1{
public String reverse(String str, int start, int end){
if(str != null && str.length() != 0){
//第一部分 取出str第一位到start(不包括start)
String reverseStr = str.substring(0,start);
//第二部分
for(int i = end-1; i>=start; i--){ //遍历需要反转的字符,从最后一位开始加入
reverseStr += str.charAt(i);
// reverseStr += str.substring(i,i+1);
}
//第三部分
reverseStr += str.substring(end); //将尾部不需要遍历字符串再加进来
return reverseStr;
}
return null;
}
}
//方式三:在二的基础上进行优化
class Reverse2 {
public String reverse(String str, int start, int end) {
if (str != null && str.length() != 0) {
StringBuilder builder = new StringBuilder(str.length());
//第一部分
builder.append(str.substring(0, start));
for (int i = end - 1; i >= start; i--) { //遍历需要反转的字符,从最后一位开始加入
builder.append(str.charAt(i));
}
//第三部分
builder.append(str.substring(end)); //将尾部不需要遍历字符串再加进来
return new String(builder);
}
return null;
}
}
字符串反转操作:Java 多种方法
最新推荐文章于 2024-03-19 13:11:58 发布