String inversa

Oi!!

como faço pra ler uma string e escreve-la na ordem inversa?

ex: macarrao --> oarracam

StringBuilder s1 = new StringBuilder("macarrao"); StringBuilder s2 = s1.reverse(); System.out.println(s2);

T+


public class StringReverse {

    public static void main(String[] args) {
        
        StringBuffer sbuf = new StringBuffer("12345");
        sbuf.reverse();
        System.out.println(sbuf);
    }
}

[]'s

Podes pegar apartir da String um array de char e ir percorrendo inversamente o array e colocando esse resultado em outra String.

A lógica é bem simples, e o que poderia ser difícil, está na documentação.

Até!

É só você ler os caracteres da String de trás pra frente…

    public void inverterString(String teste){
        String etset = "";
        for(int i=teste.length()-1; i>=0; i--){
            etset += teste.charAt(i);
        }
    }

Boa galera…

esse fórum é mesmo bom.
Ontem eu respondi uma mensagem onde a pessoa queria
fazer a mesma coisa, ou seja, imprimir uma string reversa.
Só que como não conheço todas facilidades da linguagem
citei a solução de um for reverso (do length da string até 0) igual
de Dani_Barcelos.

Abs

Quote:

[quote] esse fórum é mesmo bom.
Ontem eu respondi uma mensagem onde a pessoa queria
fazer a mesma coisa, ou seja, imprimir uma string reversa.
Só que como não conheço todas facilidades da linguagem
citei a solução de um for reverso (do length da string até 0) igual
de Dani_Barcelos. [/quote]

Dica !! consulte sempre API antes de fazer qualquer coisa e também existem bibliotecas que complementa a API do Java de alguma forma , um exemplo é o Jakarta Commons

Para um problema simples há muitos jeitos de resolver. Um jeito curioso, mas ineficiente de resolver, é assim:


class StringReversa {
    /**
     * Inverte a ordem dos caracteres de uma string. 
     * @return A string original, com a ordem dos caracteres invertida. 
     * Exemplo: "macarrao" -&gt "oarracam"; 
     * "Socorram-me, subi no onibus em Marrocos" -&gt "socorraM me subino on ibus ,em-marrocoS"
     */
    public static String revert (String s) {
        if (s.length() &lt= 1) {
            return s;
        } else {
            return revert (s.substring (1)) + s.charAt (0);
        }
    }
    
    public static void main (String[] args) {
        System.out.println (revert ("macarrao"));
        System.out.println (revert ("Socorram-me, subi no onibus em Marrocos"));
    }
}

[quote=thingol]

[code]

class StringReversa {
/**
* Inverte a ordem dos caracteres de uma string.
* @return A string original, com a ordem dos caracteres invertida.
* Exemplo: “macarrao” -&gt “oarracam”;
* “Socorram-me, subi no onibus em Marrocos” -&gt “socorraM me subino on ibus ,em-marrocoS”
*/
public static String revert (String s) {
if (s.length() &lt= 1) {
return s;
} else {
return revert (s.substring (1)) + s.charAt (0);
}
}

public static void main (String[] args) {
    System.out.println (revert ("macarrao"));
    System.out.println (revert ("Socorram-me, subi no onibus em Marrocos"));
}

}
[/code][/quote]
Isso me cheira a prolog… :lol:


    public static String reverse(String s) {        
        
        int length = s.length();
        int last = length - 1;        
        char[] chars = s.toCharArray();
        
        for (int i = 0; i < length / 2; i++) {
            char c = chars[i];
            chars[i] = chars[last - i];
            chars[last - i] = c;
        }
        return new String(chars);
    }

[]'s

Legal a solução recursiva do thingol :smiley:
A solução do aleck é duas vezes ( O(n/2) ) mais rápida que a do Dani_Barcelos.