1 2 3 4

字符串反转几种方法

package com.yasinda.demo3;

import java.util.Stack;

/**
 * @author 风清扬
 * @version 1.0
 * @data 2020/8/4
 **/
//字符串反转
public class StringReservers {
    public static void main(String[] args) {
        String s = reverse04("123456");
    }

    //使用栈的方法实现
    public static String reverse01(String str) {
        //非空校验
        /*Optional<String> optional = Optional.ofNullable(str);
        if (!optional.isPresent()) {
            return str;
        }*/
        if (str == null || str.length() <= 1) {
            return str;
        }
        char[] chars = str.toCharArray();
        Stack<Object> stack = new Stack<>();
        for (char aChar : chars) {
            stack.push(aChar);
        }
        StringBuilder builder = new StringBuilder();
        int length = str.length();
        for (int i = 0; i < length; i++) {
            builder.append(stack.pop());
        }
        String string = builder.toString();
        return string;
    }

    //首尾字符调换顺序
    public static String reverse02(String str) {
        if (str == null || str.length() <= 1) {
            return str;
        }
        char[] array = str.toCharArray();
        Character temp = ' ';
        for (int i = 0; i < array.length / 2; i++) {
            temp = array[i];
            array[i] = array[array.length - 1 - i];
            array[array.length - 1 - i] = temp;
        }
        return new String(array);
    }

    //递归
    public static String reverse03(String str) {
        if (str == null || str.length() <= 1) {
            return str;
        }
        return reverse03(str.substring(1)) + str.charAt(0);
    }

    //使用StringBuffer/StringBuilder的reverse方法
    public static String reverse04(String str) {
        if (str == null || str.length() <= 1) {
            return str;
        }
        StringBuilder stringBuilder = new StringBuilder(str);
//        StringBuffer stringBuffer = new StringBuffer(str);
        return stringBuilder.reverse().toString();
    }
}

 

posted @ 2020-08-04 20:35  Mr_Elliot  阅读(263)  评论(0)    收藏  举报
PV