• 近期将进行后台系统升级,如有访问不畅,请稍后再试!
  • 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

Java 反转字符串的 10 种方法

在这篇文章中,我们会讨论 10 种用Java反转字符串的方法,通过 10 个Java程序反转字符串。例如,把字符串“javaguides” 反转为 “sediugavaj”。

1. 使用 + (String 连接) 操作符

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseWithStringConcat {
    public static void main(String[] args) {
        ReverseWithStringConcat concat = new ReverseWithStringConcat();
        concat.reverseWithStringConcat(“javaguides”);
    }
    private String reverseWithStringConcat(String input) {
        String output = new String();
        for (int i = (input.length() – 1); i >= 0; i–) {
            output += (input.charAt(i));
        }
        display(input, output);
        return output;
    }
    private void display(String input, String output) {
        System.out.println(” input string :: ” + input);
        System.out.println(” output string :: ” + output);
    }
}

输出:

input string :: javaguides
output string :: sediugavaj

2. 使用 StringBuilder

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseWithStringBuilderBuiltinMethod {
    public static void main(String[] args) {
        ReverseWithStringBuilderBuiltinMethod builtinMethod = new ReverseWithStringBuilderBuiltinMethod();
        builtinMethod.reverseWithStringBuilderBuiltinMethod(“javaguides”);
    }
    public String reverseWithStringBuilderBuiltinMethod(String string) {
        final StringBuilder builder = new StringBuilder(string);
        display(string, builder.reverse().toString());
        return builder.reverse().toString();
    }
    private void display(String input, String output) {
        System.out.println(” input string :: ” + input);
        System.out.println(” output string :: ” + output);
    }
}

输出:

input string :: javaguides
output string :: sediugavaj

3. 使用 String charAt 方法

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseWithStringChatAt{
    public static void main(String[] args) {
        ReverseWithStringChatAt reverseWithStringBuilder = new ReverseWithStringChatAt();
        reverseWithStringBuilder.reverseWithStringBuilder(“javaguides”);
    }
    public String reverseWithStringChatAt(String string) {
        final StringBuilder builder = new StringBuilder();
        for (int i = (string.length() – 1); i >= 0; i–) {
            builder.append(string.charAt(i));
        }
        display(string, builder.toString());
        return builder.toString();
    }
    private void display(String input, String output) {
        System.out.println(” input string :: ” + input);
        System.out.println(” output string :: ” + output);
    }
}

输出:

input string :: javaguides
output string :: sediugavaj

4. 通过交换字符反转

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseStringWithSwaps {
    public static void main(String[] args) {
        ReverseStringWithSwaps stringWithSwaps = new ReverseStringWithSwaps();
        stringWithSwaps.reverseWithSwaps(“javaguides”);
    }
    public String reverseWithSwaps(String string) {
        final char[] array = string.toCharArray();
        final int length = array.length – 1;
        final int half = (int) Math.floor(array.length / 2);
        char c;
        for (int i = length; i >= half; i–) {
            c = array[length – i];
            array[length – i] = array[i];
            array[i] = c;
        }
        display(string, String.valueOf(array));
        return String.valueOf(array);
    }
    private void display(String input, String output) {
        System.out.println(” input string :: ” + input);
        System.out.println(” output string :: ” + output);
    }
}

输出:

input string :: javaguides
output string :: sediugavaj

5. 使用 XOR(^) 操作符反转

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseStringWithXOR {
    public static void main(String[] args) {
        ReverseStringWithXOR stringWithXOR = new ReverseStringWithXOR();
        stringWithXOR.reverseWithXOR(“javaguides”);
    }
    public String reverseWithXOR(String string) {
        final char[] array = string.toCharArray();
        final int length = array.length;
        final int half = (int) Math.floor(array.length / 2);
        for (int i = 0; i < half; i++) {
            array[i] ^= array[length – i – 1];
            array[length – i – 1] ^= array[i];
            array[i] ^= array[length – i – 1];
        }
        display(string, String.valueOf(array));
        return String.valueOf(array);
    }
    private void display(String input, String output) {
        System.out.println(” input string :: ” + input);
        System.out.println(” output string :: ” + output);
    }
}

输出:

input string :: javaguides
output string :: sediugavaj

6. 使用堆栈

package net.javaguides.corejava.string;
import java.util.Stack;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseStringUsingStack {
    // Function to reverse a string in Java using a stack and character array
    public static String reverse(String str) {
        // base case: if string is null or empty
        if (str == null || str.equals(“”))
            return str;
        // create an empty stack of characters
        Stack < Character > stack = new Stack < Character > ();
        // push every character of the given string into the stack
        char[] ch = str.toCharArray();
        for (int i = 0; i < str.length(); i++)
            stack.push(ch[i]);
        // start from index 0
        int k = 0;
        // pop characters from the stack until it is empty
        while (!stack.isEmpty()) {
            // assign each popped character back to the character array
            ch[k++] = stack.pop();
        }
        // convert the character array into string and return it
        return String.copyValueOf(ch);
    }
    public static void main(String[] args) {
        String str = “javaguides”;
        str = reverse(str); // string is immutable
        System.out.println(“Reverse of the given string is : ” + str);
    }
}

输出:

Reverse of the given string is : sediugavaj

7. 使用 Collections reverse() 方法

package net.javaguides.corejava.string;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseStringUsingCollectionsReverseMethod {
    // Function to reverse a string in Java using Collections.reverse()
    public static String reverse(String str) {
        // base case: if string is null or empty
        if (str == null || str.equals(“”))
            return str;
        // create an empty list of characters
        List < Character > list = new ArrayList < Character > ();
        // push every character of the given string into it
        for (char c: str.toCharArray())
            list.add(c);
        // reverse list using java.util.Collections reverse()
        Collections.reverse(list);
        // covert ArrayList into String using StringBuilder and return it
        StringBuilder builder = new StringBuilder(list.size());
        for (Character c: list)
            builder.append(c);
        return builder.toString();
    }
    public static void main(String[] args) {
        String str = “Java Guides”;
        // String is immutable
        str = reverse(str);
        System.out.println(“Reverse of the given string is : ” + str);
    }
}

输出:

Reverse of the given string is : sediuG avaJ

8. 使用 Byte 数组

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class ReverseStringUsingByteArray {
    // Function to reverse a string in Java using byte array
    public static String reverse(String str) {
        // return if string is null or empty
        if (str == null || str.equals(“”))
            return str;
        // convert string into bytes
        byte[] bytes = str.getBytes();
        // start from the two end points l and h of the given string
        // and increment l & decrement h at each iteration of the loop
        // until two end-points intersect (l >= h)
        for (int l = 0, h = str.length() – 1; l < h; l++, h–) {
            // Swap values at l and h
            byte temp = bytes[l];
            bytes[l] = bytes[h];
            bytes[h] = temp;
        }
        // convert byte array back into the string
        return new String(bytes);
    }
    public static void main(String[] args) {
        String str = “Java Guides”;
        // String is immutable
        str = reverse(str);
        System.out.println(“Reverse of the given string is : ” + str);
    }
}

输出:

Reverse of the given string is : sediuG avaJ

9. 使用 substring() 方法

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class UsingSubStringFunction {
    // Function to reverse a string in Java using recursion
    private static String reverse(String str) {
        // base case: if string is null or empty
        if (str == null || str.equals(“”))
            return str;
        // last character + recurse for remaining string
        return str.charAt(str.length() – 1) + reverse(str.substring(0, str.length() – 1));
    }
    public static void main(String[] args) {
        String str = “javaguides”;
        // string is immutable
        str = reverse(str);
        System.out.println(“Reverse of the given string is : ” + str);
    }
}

输出:

Reverse of the given string is : sediugavaj

10. 使用递归

package net.javaguides.corejava.string;
/**
 * 
 * @author Ramesh Fadatare
 *
 */
public class UsingRecursion {
    static int i = 0;
    // Recursive function to reverse a string in Java using static variable
    private static void reverse(char[] str, int k) {
        // if we have reached the end of the string
        if (k == str.length)
            return;
        // recurse for next character
        reverse(str, k + 1);
        if (i <= k) {
            char temp = str[k];
            str[k] = str[i];
            str[i++] = temp;
        }
    }
    public static String reverse(String str) {
        // base case: if string is null or empty
        if (str == null || str.equals(“”))
            return str;
        // convert string into a character array
        char[] A = str.toCharArray();
        // reverse character array
        reverse(A, 0);
        // convert character array into the string
        return String.copyValueOf(A);
    }
    public static void main(String[] args) {
        String str = “Java Guides”;
        // string is immutable
        str = reverse(str);
        System.out.println(“Reverse of the given string is : ” + str);
    }
}

输出:

Reverse of the given string is : sediuG avaJ

String 相关文章


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Java 反转字符串的 10 种方法
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

欢迎 注册账号 登录 发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00