zoukankan      html  css  js  c++  java
  • 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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

    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);
        }
    }

     原文链接:https://dzone.com/articles/10-ways-to-reverse-a-string-in-java

    转载译文链接: http://www.importnew.com/30579.html

  • 相关阅读:
    【项目】项目1
    Python脚本1
    Python基础24
    Python基础23(习惯)
    01-Spring(1)
    12-Shell(2)
    11-Shell(1)
    10-搭建EE环境
    09-常用指令(3)
    08-常用指令(2)
  • 原文地址:https://www.cnblogs.com/taich-flute/p/10070143.html
Copyright © 2011-2022 走看看