Reverse string di Jawa

Saya telah "Hello World" disimpan dalam variabel String bernama hi.

Saya perlu untuk mencetak, tetapi terbalik.

Bagaimana saya bisa melakukan ini? Saya mengerti ada beberapa jenis fungsi yang sudah built-in ke Jawa yang melakukan itu.

Terkait: Membalikkan masing-masing individu kata-kata "Hello World" string dengan Java

Mengomentari pertanyaan (4)
Larutan

Anda dapat menggunakan ini:

new StringBuilder(hi).reverse().toString()

Atau, untuk versi sebelumnya dari JDK 1.5, menggunakan jawa.util.StringBuffer bukan StringBuilder — mereka yang sama-sama memiliki API. Terima kasih komentator untuk menunjukkan bahwa StringBuilder lebih disukai saat ini ketika tidak ada concurrency perhatian.

Komentar (6)

Untuk Online Juri masalah yang tidak memungkinkan StringBuilder atau StringBuffer, anda bisa melakukannya di tempat menggunakan char[] sebagai berikut:

public static String reverse(String input){
    char[] in = input.toCharArray();
    int begin=0;
    int end=in.length-1;
    char temp;
    while(end>begin){
        temp = in[begin];
        in[begin]=in[end];
        in[end] = temp;
        end--;
        begin++;
    }
    return new String(in);
}
Komentar (3)
public static String reverseIt(String source) {
    int i, len = source.length();
    StringBuilder dest = new StringBuilder(len);

    for (i = (len - 1); i >= 0; i--){
        dest.append(source.charAt(i));
    }

    return dest.toString();
}

http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm

Komentar (2)
String string="whatever";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println(reverse);
Komentar (2)

Saya melakukan ini dengan menggunakan dua cara berikut:

Reverse string dengan KARAKTER:

public static void main(String[] args) {
    // Using traditional approach
    String result="";
    for(int i=string.length()-1; i>=0; i--) {
        result = result + string.charAt(i);
    }
    System.out.println(result);

    // Using StringBuffer class
    StringBuffer buffer = new StringBuffer(string);
    System.out.println(buffer.reverse());    
}

Reverse string dengan kata-KATA:

public static void reverseStringByWords(String string) {
    StringBuilder stringBuilder = new StringBuilder();
    String[] words = string.split(" ");

    for (int j = words.length-1; j >= 0; j--) {
        stringBuilder.append(words[j]).append(' ');
    }
    System.out.println("Reverse words: " + stringBuilder);
}
Komentar (0)

Lihatlah Jawa 6 API bawah StringBuffer

String s = "sample";
String result = new StringBuffer(s).reverse().toString();
Komentar (3)

Berikut adalah contoh menggunakan rekursi:

public void reverseString() {
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String reverseAlphabet = reverse(alphabet, alphabet.length()-1);
}

String reverse(String stringToReverse, int index){
    if(index == 0){
        return stringToReverse.charAt(0) + "";
    }

    char letter = stringToReverse.charAt(index);
    return letter + reverse(stringToReverse, index-1);
}
Komentar (7)

Saya mencoba, hanya untuk bersenang-senang, dengan menggunakan Stack. Berikut kode saya:

public String reverseString(String s) {
    Stack stack = new Stack();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        stack.push(s.charAt(i));
    }
    while (!stack.empty()) {
        sb.append(stack.pop());
    }
    return sb.toString();

}
Komentar (0)

Berikut ini adalah tingkat rendah solusi:


import java.util.Scanner;

public class class1 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String inpStr = in.nextLine();
        System.out.println("Original String :" + inpStr);
        char temp;
        char[] arr = inpStr.toCharArray();
        int len = arr.length;
        for(int i=0; i
Komentar (0)

Sejak metode di bawah ini (menggunakan XOR) untuk reverse string tidak terdaftar, saya melampirkan metode ini untuk membalik string.

The Algoritma didasarkan pada :

1.(A XOR B) XOR B = A

2.(A XOR B) XOR A = B

Potongan kode:

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

}

Output:

keetarp

Komentar (0)

Seperti orang lain telah menunjukkan cara yang lebih disukai adalah dengan menggunakan:

new StringBuilder(hi).reverse().toString()

tapi jika anda ingin menerapkan hal ini dengan sendirinya, aku'am takut bahwa sisa responses memiliki kekurangan.

Alasannya adalah String yang mewakili daftar Unicode poin, dikodekan dalam char[] hotel yang sesuai untuk variable-length encoding: UTF-16.

Ini berarti beberapa poin kode menggunakan satu elemen dari array (satu kode unit) tetapi yang lain menggunakan dua dari mereka, sehingga mungkin ada pasangan-pasangan dari karakter-karakter yang harus diperlakukan sebagai satu unit (berturut-turut "tinggi" dan "murah" pengganti)

public static String reverseString(String s) {
    char[] chars = new char[s.length()];
    boolean twoCharCodepoint = false;
    for (int i = 0; i < s.length(); i++) {
        chars[s.length() - 1 - i] = s.charAt(i);
        if (twoCharCodepoint) {
            swap(chars, s.length() - 1 - i, s.length() - i);
        }
        twoCharCodepoint = !Character.isBmpCodePoint(s.codePointAt(i));
    }
    return new String(chars);
}

private static void swap(char[] array, int i, int j) {
    char temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}

public static void main(String[] args) throws Exception {
    FileOutputStream fos = new FileOutputStream("C:/temp/reverse-string.txt");
    StringBuilder sb = new StringBuilder("Linear B Syllable B008 A: ");
    sb.appendCodePoint(65536); //http://unicode-table.com/es/#10000
    sb.append(".");
    fos.write(sb.toString().getBytes("UTF-16"));
    fos.write("\n".getBytes("UTF-16"));
    fos.write(reverseString(sb.toString()).getBytes("UTF-16"));
}
Komentar (1)

Hal ini sangat sederhana di minimum kode garis

public class ReverseString {
    public static void main(String[] args) {
        String s1 = "neelendra";
        for(int i=s1.length()-1;i>=0;i--)
            {
                System.out.print(s1.charAt(i));
            }
    }
}
Komentar (1)
System.out.print("Please enter your name: ");
String name = keyboard.nextLine();

String reverse = new StringBuffer(name).reverse().toString();
String rev = reverse.toLowerCase();
System.out.println(rev);

Saya menggunakan metode ini untuk mengubah nama belakang dan ke bawah.

Komentar (0)

Ini melakukan trik untuk saya

public static void main(String[] args) {

    String text = "abcdefghijklmnopqrstuvwxyz";

    for (int i = (text.length() - 1); i >= 0; i--) {
        System.out.print(text.charAt(i));
    }
}
Komentar (0)

1. Menggunakan Array Karakter:

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. Menggunakan StringBuilder:

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

ATAU

return new StringBuilder(inputString).reverse().toString();
Komentar (0)
    public String reverse(String s) {

        String reversedString = "";
        for(int i=s.length(); i>0; i--) {
            reversedString += s.charAt(i-1);
        }   

        return reversedString;
    }
Komentar (3)

Prosedur :

Kita dapat menggunakan split() memecah string .Kemudian menggunakan reverse loop dan menambahkan karakter.


Potongan kode:

class test
{
  public static void main(String args[]) 
  {
      String str = "world";
      String[] split= str.split("");

      String revers = "";
      for (int i = split.length-1; i>=0; i--)
      {
        revers += split[i];
      }
      System.out.printf("%s", revers);
   }  
}

 //output : dlrow

Komentar (0)

Hanya Untuk bersenang-Senang..:)

Algorithm (str,len)
char reversedStr[] =new reversedStr[len]

Traverse saya dari 0 ke len/2 dan kemudian

reversedStr[i]=str[len-1-i]  
reversedStr[len-1=i]=str[i]
return reversedStr;

Kompleksitas waktu O(n)

Ruang Kompleksitas :O(n)


public class Reverse {
    static char reversedStr[];

    public static void main(String[] args) {
        System.out.println(reversestr("jatin"));
    }

    private static String reversestr(String str) {
        int strlen = str.length();
        reversedStr = new char[strlen];

        for (int i = 0; i 
Komentar (0)

Salah satu cara alami untuk membalikkan String adalah dengan menggunakan StringTokenizer dan sebuah stack. Stack adalah kelas yang mengimplementasikan mudah-ke-menggunakan last-in, first-out (LIFO) tumpukan benda-benda.

String s = "Hello My name is Sufiyan";

Meletakkannya di tumpukan frontwards

Stack myStack = new Stack();
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens()) {
     myStack.push(st.nextToken());
}

Mencetak stack mundur

System.out.print('"' + s + '"' + " backwards by word is:\n\t\"");
while (!myStack.empty()) {
  System.out.print(myStack.pop());
  System.out.print(' ');
}

System.out.println('"');
Komentar (0)
public class Test {

public static void main(String args[]) {
   StringBuffer buffer = new StringBuffer("Game Plan");
   buffer.reverse();
   System.out.println(buffer);
 }  
}
Komentar (1)