2012-09-06 16 views

risposta

21

Prova questa,

String s = "responses"; 
StringBuilder builder = new StringBuilder(s); 
System.out.println(builder.reverse()); 
8

Usa StringBuilder's o StringBuffer's metodo ... reverse()

public class StringReverse 
{ 
    public static void main(String[] args) 
    { 
    String string=args[0]; 
    String reverse = new StringBuffer(string).reverse().toString(); 
    System.out.println("\nString before reverse: "+string); 
    System.out.println("String after reverse: "+reverse); 
    } 
} 

StringBuffer è thread-safe , dove StringBuilder è Non thread safe ..... StringBuilderè stato introdotto da Java 1.5, come per fare quelle operazioni più velocemente che non ha alcuna concorrenza di cui preoccuparsi ....

+0

dispiace ... per errore ho perso la parte Builder e Buffer –

+0

Vedere l'esempio –

+1

Si dovrebbe usare StringBuilder vs. StringBuffer, se non avete problemi di concorrenza a risolvere. – assylias

4

Prova metodo reverse() :

StringBuilder stringName = new StringBuilder(); 
String reverse = stringName.reverse().toString(); 
+0

Sei sicuro che questo metodo esista? http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html –

+0

Grazie per il tuo consiglio, la domanda non ha risposto correttamente – lfergon

2

È possibile utilizzare buffer di stringa per invertire una stringa.

public String reverse(String s) { 
    return new StringBuffer(s).reverse().toString(); 
} 

un modo più interessante per farlo è la ricorsione.

public String reverse(String s) { 
    if (s.length() <= 1) { 
     return s; 
    } 
    return reverse(s.substring(1, s.length())) + s.charAt(0); 
} 
2

È possibile utilizzare StringBuilder ..

String word = "Hello World!"; 
StringBuilder sb = new StringBuilder(word); 

System.out.print(sb.reverse()); 
1

"Senza passare attraverso la sequenza di char .." - un modo semplice:

public String reverse(String post) 
{     
    String backward = ""; 
    for(int i = post.length()-1; i >= 0; i--) { 
     backward = backward + post.substring(i, i+1); 
    }   
    return backward; 
} 
1

questo è un modo per farlo utilizzando ricorsione -

public static String reverse(String s1){ 
     int l = s1.length(); 
     if (l>1) 
       return(s1.substring(l-1) + reverse(s1.substring(0,l-1))); 
     else 
       return(s1.substring(0)); 
} 
0

Qui ho un campione dello stesso utilizzando il metodo substring e o (n) senza utilizzare alcun nethod dalla stringa. Sono consapevole che l'utilizzo della sottostringa terrà la memoria completa delle stringhe.

for(int i = 0; i < s.length(); i++) { 
    s = s.substring(1, s.length() - i) + s.charAt(0) + s.substring(s.length() - i); 
    System.out.println(s); 
} 

Questo potrebbe aiutarti !!

1

Utilizzo di supporto API minimo. Un semplice algoritmo.

static String reverse(String str) { 
    char[] buffer = str.toCharArray(); 
    for (int i = 0; i < buffer.length/2; ++i){ 
     char c = buffer[i]; 
     buffer[i] = buffer[buffer.length-1-i]; 
     buffer[buffer.length-1-i] = c; 
    } 
    return new String(buffer); 
} 
-1
public class RevString { 
    public static void main(String[] args) { 
    String s="jagan"; 
    String rev=""; 
    for (int i=s.length()-1;i>=0;i--) { 
     rev=rev+s.charAt(i); 
    } 
    System.out.println("Reverse String is: "+rev); 
    } 
} 
+0

Questa è la stessa logica di quella di nazar_art risposta dal 2013 –

0

non ho visto alcun modo semplice. Qui è il modo adatto per fare:


Utilizzo del ciclo:


String d = "abcdefghij"; 
    char b[] = new char[d.length()];// new array; 
    int j=0; // for the array indexing 
    for(int i=d.length()-1;i>=0;i--){ 
     b[j] = d.charAt(i); // input the last value of d in first of b i.e. b[0] = d[n-1] 
     j++; 
    } 
    System.out.println("The reverse string is: "+String.valueOf(b)); 


uscita è The reverse string is: jihgfedcba
La logica semplice è:

array[i] = array[n-i]; dove i è l'iterazione e n è la lunghezza totale della gamma

Problemi correlati