2012-04-06 5 views
-3

Ich habe eine Zeichenfolge sagen wir "Saral". Ich möchte diese Zeichenfolge umkehren. Wie kann es durch String-Klasse selbst getan werden?Kehren Sie eine Zeichenfolge durch String-Klasse selbst

Nicht über String-Puffer oder String-Builder, sondern nur über String-Klasse.

public static String reverse(String in) { 
    int pos = in.length() - 1; 
    return pos == -1 ? "" : in.substring(pos) + reverse(in.substring(0, pos)); 
} 
+8

Nur aus Neugier - warum? –

+2

(Bitte stellen Sie keine zufälligen Satzzeichen überall in Ihren Posts) – Mat

+1

Loks wie eine typisch dämliche akademische Frage zu mir, ist das Heimarbeit? –

Antwort

3

Sie können eine rekursive Funktion, so etwas wie verwenden. Aber man könnte eine umgekehrte Zeichenfolge durch Iteration die Zielzeichenfolge in umgekehrter Reihenfolge und das Voranstellen der Zeichen auf eine neue Zeichenfolge bauen:

public static String reverse(String source) { 
    String target = ""; 
    for (int i=0; i<source.length(); i++) { 
    target = source.charAt(i) + target; 
    } 
    return target; 
} 

Beachten Sie, dass diese ziemlich ineffizient ist, da String-Verkettung (über den + Operator) schafft tatsächlich einen String unter der Haube, so dass Sie eine Reihe von temporären Objekten zuweisen.

+0

Hallo, vielen Dank, können Sie bitte den ternären Operator durch einfache ersetzen, wenn sonst und dann wieder dieses unter Stück Code schreiben kann, das wird eine große Hilfe sein, um zu verstehen, .. !! – dghtr

+7

@SARAL Können Sie den ternären Operator durch ein einfaches if-else ersetzen? Da Sie den Namen "ternärer Operator" kennen, sollte ich hoffen, dass Sie das können! –

1

Es gibt keine einfache, effiziente Möglichkeit, es zu tun, da Java-Strings sind unveränderlich, und sie bieten keine reverse() Methode:

+0

Ich denke, es ist heutzutage tatsächlich ein 'StringBuilder' unter der Haube, nicht dass es einen großen Unterschied macht ... – DNA

Verwandte Themen