程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 5中方式實現String反轉,實現string反轉

5中方式實現String反轉,實現string反轉

編輯:JAVA綜合教程

5中方式實現String反轉,實現string反轉


這裡介紹Java中5中實現String反轉的方式。

一、數組實現String反轉

//數組實現String反轉
    public String reverseByArray(){
        if(str == null || str.length() == 1){
            return null;
        }
        char[] ch = str.toCharArray();//字符串轉換成字符數組
        for(int i = 0 ; i < ch.length/2 ; i++){
            char temp = ch[i];
            ch[i] = ch[ch.length-i-1];
            ch[ch.length-i-1] = temp;
        }
        return new String(ch);
    }  

二、棧實現String反轉

//用棧實現String反轉
    public String reverseByStack(){
        if(str == null || str.length() == 1){
            return null;
        }
        Stack<Character> stack = new Stack<Character>();
        char[] ch = str.toCharArray();//字符串轉換成字符數組
        for (char c : ch) {
            stack.push(c);//每個字符,推進棧
        }
        for (int i = 0; i < ch.length; i++) {
            ch[i] = stack.pop();//移除這個堆棧的頂部對象
        }
        return new String(ch);
    }  

三、逆序遍歷實現String反轉

//用逆序遍歷實現String反轉

    public String reverseBySort(){
        if(str == null || str.length() == 1){
            return null;
        }
        StringBuffer sb = new StringBuffer();
        for (int i = str.length() -1 ; i >= 0; i--) {
            sb.append(str.charAt(i));//使用StringBuffer從右往左拼接字符
        }
        return sb.toString();
    }

四、位運算實現String反轉

//使用位運算實現String反轉
    public String reverseByBit() { 
        if(str == null || str.length() == 1){
            return null;
        }
        char[] ch = str.toCharArray();//字符串轉換成字符數組
        int len = str.length(); 
        for(int i= 0; i< len/ 2; i++) { 
            ch[i]^= ch[len- 1- i]; 
            ch[len- 1- i]^= ch[i]; 
            ch[i]^= ch[len- 1- i]; 
        }
        return new String(ch);
    }  

五、遞歸實現String反轉

//使用遞歸實現String反轉
    public String reverseByRecursive(String str){
        if(str == null || str.length() == 0){
            return null;
        }
        if(str.length() == 1){
            return str;
        } else {
            //從下標為1開始截取字符串,在返回下標為0的字符
            return reverseByRecursive(str.substring(1)) + str.charAt(0);
        }
    }  

六、測試

public class Test {
    public static void main(String[] args) {
        String s = "123456";
        Reverse r = new Reverse(s);
        System.out.println(r.reverseByArray());
        System.out.println(r.reverseByStack());
        System.out.println(r.reverseBySort());
        System.out.println(r.reverseByBit());
        System.out.println(r.reverseByRecursive(s));
        
    }
} 

七、結果

八、用於String反轉的全部代碼

public class Reverse { private String str = null; public Reverse(String str){ this.str = str; } //數組實現String反轉 public String reverseByArray(){ if(str == null || str.length() == 1){ return null; } char[] ch = str.toCharArray();//字符串轉換成字符數組 for(int i = 0 ; i < ch.length/2 ; i++){ char temp = ch[i]; ch[i] = ch[ch.length-i-1]; ch[ch.length-i-1] = temp; } return new String(ch); } //用棧實現String反轉 public String reverseByStack(){ if(str == null || str.length() == 1){ return null; } Stack<Character> stack = new Stack<Character>(); char[] ch = str.toCharArray();//字符串轉換成字符數組 for (char c : ch) { stack.push(c);//每個字符,推進棧 } for (int i = 0; i < ch.length; i++) { ch[i] = stack.pop();//移除這個堆棧的頂部對象 } return new String(ch); } //用逆序遍歷實現String反轉 public String reverseBySort(){ if(str == null || str.length() == 1){ return null; } StringBuffer sb = new StringBuffer(); for (int i = str.length() -1 ; i >= 0; i--) { sb.append(str.charAt(i));//使用StringBuffer從右往左拼接字符 } return sb.toString(); } //使用位運算實現String反轉 public String reverseByBit() { if(str == null || str.length() == 1){ return null; } char[] ch = str.toCharArray();//字符串轉換成字符數組 int len = str.length(); for(int i= 0; i< len/ 2; i++) { ch[i]^= ch[len- 1- i]; ch[len- 1- i]^= ch[i]; ch[i]^= ch[len- 1- i]; } return new String(ch); } //使用遞歸實現String反轉 public String reverseByRecursive(String str){ if(str == null || str.length() == 0){ return null; } if(str.length() == 1){ return str; } else { //從下標為1開始截取字符串,在返回下標為0的字符 return reverseByRecursive(str.substring(1)) + str.charAt(0); } } } 全部代碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved