2016-08-08 31 views
-4

Angenommen, es gibt eine String-Variable str = "A man is no one!", dann brauche ich die Umkehrung dieser Zeichenfolge in derselben Variable wie "!eno on si nam A", ohne ein anderes Objekt zu verwenden oder variabel. Könnte jemand bitte den optimalsten Weg dazu bieten?Reverse einen String und speichern Sie es in der gleichen Variablen in Java mit String-Klasse Methoden

ich schon unten Stück Code verwendet:

public static String reverseRecursively(String str) { 
     //base case to handle one char string and empty string 
     if (str.length() < 2) { 
      return str; 
     } 
     return reverseRecursively(str.substring(1)) + str.charAt(0); 
    } 

irgendeine andere Weise, dies zu tun?

Bitte beachten Sie, dass ich es nur mit String class methods wollen.

+0

Könnten Sie Ihren nicht optimierten Weg bieten? – csmckelvey

Antwort

1

Versuchen Sie es.

new StringBuilder(str).reverse().toString() 

Während dies eine neue String Instanz schafft, ist es nicht speichert es in einer Variablen, und es wäre sehr schwierig sein (wenn möglich) auch immer die Zeichenfolge ohne neue Objekte aufzuheben.

bearbeiten

Da Sie alles andere als String Methoden nicht verwenden möchten, hier ist eine einfache Möglichkeit, es mit einer Schleife statt zu tun, aber wieder noch schafft es neue Objekte.

char[] chars = new char[str.length()]; 
for (int i = 0; i < str.length(); i++) { 
    chars[str.length() - i - 1] = str.charAt(i); 
} 
String newStr = new String(chars); 
+0

Ich möchte nicht StringBuilder verwenden. Ich möchte nur String-Klassenmethoden umkehren. –

+0

@ShashankShekher Ich habe meine Antwort aktualisiert. – apemanzilla

+0

Eine andere Lösung? –