2012-09-06 15 views

Respuesta

21

probar esto,

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

Uso StringBuilder'sStringBuffer's o método ... 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 es flujos seguros , donde como StringBuilder es No hilo seguro ..... StringBuilderse introdujo desde Java 1.5, en cuanto a hacer esas operaciones más rápido que no tiene ninguna concurrencia que preocuparse ....

+0

Lo siento ... por error me perdí la parte del constructor y Tampón –

+0

Vea el ejemplo –

+1

Debe utilizar StringBuilder frente a StringBuffer, a menos que tenga problemas de concurrencia a resolver. – assylias

4

Trate atrás() método :

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

¿Está seguro de que este método existe? http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html –

+0

Gracias por su consejo, la pregunta no está correctamente respondida – lfergon

2

Puede usar String buffer para invertir una cadena.

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

una forma más interesante de hacer esto es recursion.

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

Es posible utilizar StringBuilder ..

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

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

"Sin pasar por la secuencia de carbón .." - una forma fácil:

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

Esta es una manera de hacerlo a través de recursión -

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

Aquí tengo una muestra de lo mismo utilizando el método de subcadena y o (n) sin usar ningún nethods de la cadena. Soy consciente de que el uso de la subcadena contendrá la memoria de cadena completa.

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

Esto podría ayudarlo !!

1

Uso de compatibilidad mínima con API. Un algoritmo simple.

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

Esta es la misma lógica que nazar_art's respuesta desde 2013 –

0

no he visto ninguna manera fácil. Aquí es la manera adecuada para hacer:


Uso del bucle:


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


salida es The reverse string is: jihgfedcba
La lógica simple es:

array[i] = array[n-i]; donde i es la iteración y n es la longitud total de la matriz

Cuestiones relacionadas