將一個字串進行反轉:將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”

小白衝發表於2021-04-16
將一個字串進行反轉:將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”

方式一:轉換為char[]

public String reverse(String str,int startIndex,int endIndex){

        if(str != null){
            char[] arr = str.toCharArray();
            for(int x = startIndex,y = endIndex;x < y;x++,y--){
                char temp = arr[x];
                arr[x] = arr[y];
                arr[y] = temp;
            }

            return new String(arr);
        }
        return null;
    }



@Test//測試程式碼
    public void testReverse(){
        String str = "abcdefg";
        String reverse = reverse2(str, 2, 5);
        System.out.println(reverse);
    }

 


 


 

//方式二:使用String的拼接

public String reverse1(String str,int startIndex,int endIndex){
        if(str != null){
            //第1部分
            String reverseStr = str.substring(0,startIndex);
            //第2部分
            for(int i = endIndex;i >= startIndex;i--){
                reverseStr += str.charAt(i);
            }
            //第3部分
            reverseStr += str.substring(endIndex + 1);

            return reverseStr;

        }
        return null;
    }

//方式三:使用StringBuffer/StringBuilder替換String

public String reverse2(String str,int startIndex,int endIndex){
        if(str != null){
            StringBuilder builder = new StringBuilder(str.length());

            //第1部分
            builder.append(str.substring(0,startIndex));
            //第2部分
            for(int i = endIndex;i >= startIndex;i--){

                builder.append(str.charAt(i));
            }
            //第3部分
            builder.append(str.substring(endIndex + 1));

            return builder.toString();
        }
        return null;

    }

package com.atguigu.exer;

import org.junit.Test;

/**
* @author CH
* @create 2021 上午 10:07
*/
public class StringDemo {

/*
將一個字串進行反轉。將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”

方式一:轉換為char[]
*/
public String reverse(String str,int startIndex,int endIndex){

if(str != null){
char[] arr = str.toCharArray();
for(int x = startIndex,y = endIndex;x < y;x++,y--){
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}

return new String(arr);
}
return null;
}

//方式二:使用String的拼接
public String reverse1(String str,int startIndex,int endIndex){
if(str != null){
//第1部分
String reverseStr = str.substring(0,startIndex);
//第2部分
for(int i = endIndex;i >= startIndex;i--){
reverseStr += str.charAt(i);
}
//第3部分
reverseStr += str.substring(endIndex + 1);

return reverseStr;

}
return null;
}
//方式三:使用StringBuffer/StringBuilder替換String
public String reverse2(String str,int startIndex,int endIndex){
if(str != null){
StringBuilder builder = new StringBuilder(str.length());

//第1部分
builder.append(str.substring(0,startIndex));
//第2部分
for(int i = endIndex;i >= startIndex;i--){

builder.append(str.charAt(i));
}
//第3部分
builder.append(str.substring(endIndex + 1));

return builder.toString();
}
return null;

}

@Test
public void testReverse(){
String str = "abcdefg";
String reverse = reverse1(str, 2, 5);
System.out.println(reverse);
}

}

StringBuffer 類不同於String ,其物件必須使用構造器生成。有 三 個 構造 器 :
StringBuffer() :初始為 容量為16 的字串緩衝區
StringBuffer(int size) :構造 指定容量的字串緩衝區
StringBuffer(String str) :將 內容初始化為指定字串內容

 

StringBuffer 類的常用方法
StringBuffer append(xxx):提供了很多的append()方法,用於進行字串拼接
StringBuffer delete(int start,int end):刪除指定位置的內容
StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把當前字元序列逆轉
 當append和insert時,如果原來value陣列長度不夠,可擴容。
 如上這些方法支援方法鏈操作。

 

相關文章