Обратная строка в Java

Также существует сложный способ сделать это в компоновщике с участием двух библиотек-заглушек.

Библиотека # 1 связана с библиотекой хоста и предоставляет переопределенный символ под другим именем.

Библиотека # 2 связана с библиотекой # 1, перехватывает вызов и вызывает переопределенную версию в библиотеке # 1.

Будьте очень осторожны с порядками ссылок здесь или не будет работать.

422
задан Massimiliano Kraus 10 September 2017 в 21:38
поделиться

5 ответов

1. Использование массива символов:

public String reverseString(String inputString) {
    char[] inputStringArray = inputString.toCharArray();
    String reverseString = "";
    for (int i = inputStringArray.length - 1; i >= 0; i--) {
        reverseString += inputStringArray[i];
    }
    return reverseString;
}

2. Использование StringBuilder:

public String reverseString(String inputString) {
    StringBuilder stringBuilder = new StringBuilder(inputString);
    stringBuilder = stringBuilder.reverse();
    return stringBuilder.toString();
}

ИЛИ

return new StringBuilder(inputString).reverse().toString();
3
ответ дан Björn Lindqvist 10 September 2017 в 21:38
поделиться

Так как приведенный ниже метод (с использованием XOR ) для обращения строки не указан, я прилагаю этот метод для обращения строки.

Алгоритм основан на:

1. (A XOR B) XOR B = A

2. (A XOR B) XOR A = B

Фрагмент кода:

public class ReverseUsingXOR {
    public static void main(String[] args) {
        String str = "prateek";
        reverseUsingXOR(str.toCharArray());
    }   

    /*Example:
     * str= prateek;
     * str[low]=p;
     * str[high]=k;
     * str[low]=p^k;
     * str[high]=(p^k)^k =p;
     * str[low]=(p^k)^p=k;
     * 
     * */
    public static void reverseUsingXOR(char[] str) {
        int low = 0;
        int high = str.length - 1;

        while (low < high) {
            str[low] = (char) (str[low] ^ str[high]);
            str[high] = (char) (str[low] ^ str[high]);   
            str[low] = (char) (str[low] ^ str[high]);
            low++;
            high--;
        }

        //display reversed string
        for (int i = 0; i < str.length; i++) {
            System.out.print(str[i]);
        }
    }

}

Выход:

keetarp

11
ответ дан Prateek Joshi 10 September 2017 в 21:38
поделиться
    //Solution #1 -- Using array and charAt()
    String name = "reverse"; //String to reverse
    Character[] nameChar =  new Character[name.length()]; // Declaring a character array with length as length of the String which you want to reverse.
    for(int i=0;i<name.length();i++)// this will loop you through the String
    nameChar[i]=name.charAt(name.length()-1-i);// Using built in charAt() we can fetch the character at a given index. 
    for(char nam:nameChar)// Just to print the above nameChar character Array using an enhanced for loop
    System.out.print(nam);


    //Solution #2 - Using StringBuffer and reverse ().
    StringBuffer reverseString = new StringBuffer("reverse");
    System.out.println(reverseString.reverse()); //reverse () Causes the character sequence to be replaced by the reverse of the sequence.
1
ответ дан 22 November 2019 в 23:11
поделиться

Простой Для цикла в java

 public void reverseString(char[] s) {
    int length = s.length;
    for (int i = 0; i < s.length / 2; i++) {
        // swaping character
        char temp = s[length - i - 1];
        s[length - i - 1] = s[i];
        s[i] = temp;
    }
}
0
ответ дан 22 November 2019 в 23:11
поделиться
package ThingsInArray;

public class MagicWithSelectionSort {

    public static void main(String[] arg) {
        isSort("uhsnamiH");
    }

    private static void isSort(String name) {
        String revName="";
        for (int i = name.toCharArray().length-1; i >0 ; i--) {
            revName=revName+name.charAt(i);
        }
        System.out.println(revName);
    }

}
0
ответ дан 22 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: