String inversa

10 respostas
Laisa

Oi!!

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

ex: macarrao --> oarracam

10 Respostas

diego2005

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

T+

aleck
public class StringReverse {

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

[]'s

maquiavelbona

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é!

D

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

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

Bravox

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.

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

T

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"));
    }
}
Mantu
thingol:
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"));
    }
}
Isso me cheira a prolog... :lol:
aleck
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

davidbuzatto

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.

Criado 20 de julho de 2007
Ultima resposta 20 de jul. de 2007
Respostas 10
Participantes 10