继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java常用字符串反转的五种方案

SoyaDokio
关注TA
已关注
手记 2
粉丝 4
获赞 90

话不多说,直接上代码。

  • 第一个类是运行类Run.java
package com.imooc.strreverse;

import java.util.Scanner;
public class Run {

    public Run() {
        System.out.print("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println();
        String reversedStrByArray = new Reverse(str).reverseByArray();
        System.out.println("对应反转字符串为[Array]:"+ reversedStrByArray);
        String reversedStrByStack = new Reverse(str).reverseByStack();
        System.out.println("对应反转字符串为[Stack]:"+ reversedStrByStack);
        String reversedStrBySort = new Reverse(str).reverseBySort();
        System.out.println("对应反转字符串为[逆序遍历]:"+ reversedStrBySort);
        String reversedStrByBit = new Reverse(str).reverseByBit();
        System.out.println("对应反转字符串为[位运算]:"+ reversedStrByBit);
        String reversedStrByRecursive = new Reverse(str).reverseByRecursive(str);
        System.out.println("对应反转字符串为[递归]:"+ reversedStrByRecursive);
    }

    public static void main(String[] args) {
        new Run();
    }

}
  • 第二段代码是实现类Reverse.java
package com.imooc.strreverse;

import java.util.Stack;
public class Reverse {
    String str = new String();
    public Reverse(String str) {
        this.str = str;
    }
    //用数组实现
    public String reverseByArray() {
        if(str == null  str.length() == 0) {
            return str;
        }
        int len = str.length();
        char[] chArray = str.toCharArray();
        for(int i= 0; i< len/2; i++) {
            char temp;
            temp = chArray[i];
            chArray[i] = chArray[len- 1- i];
            chArray[len- 1- i] = temp;
        }
        return new String(chArray);
    }
    //用栈实现
    public String reverseByStack() {
        if(str == null  str.length() == 0) {
            return str;
        }
        Stack<Character> strStack = new Stack<Character>();
        char[] chArray = str.toCharArray();
        for(Character ch: chArray) {
            strStack.push(ch);
        }
        int len = str.length();
        for(int i= 0; i< len; i++) {
            chArray[i] = strStack.pop();
        }
        return new String(chArray);
    }
    //用逆序遍历实现
    public String reverseBySort() {
        if(str == null  str.length() == 0) {
            return str;
        }
        StringBuilder sb = new StringBuilder();
        for(int i= str.length()- 1; i>= 0; i--) {
            sb.append(str.charAt(i));
        }
        return sb.toString();
    }
    //用位运算实现
    public String reverseByBit() {
        if(str == null  str.length() == 0) {
            return str;
        }
        char[] chArray = str.toCharArray();
        int len = str.length();
        for(int i= 0; i< len/ 2; i++) {
            chArray[i]^= chArray[len- 1- i];
            chArray[len- 1- i]^= chArray[i];
            chArray[i]^= chArray[len- 1- i];
        }
        return new String(chArray);
    }
    //用递归实现
    public String reverseByRecursive(String str) {
        if(str == null  str.length() == 0) {
            return str;
        }
        int len = str.length();
        if(len == 1) {
            return str;
        } else {
            return reverseByRecursive(str.substring(1))+ str.charAt(0);
        }
    }
}
打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP