[RESOLVIDO] Inversão de String em Java

8 respostas
java
G

Olá, boa noite,

Sou novo em Java e estava querendo aprender mais sobre java e me deparei com um exercício que não consigo resolver.
Preciso inverter uma String de números sendo que preciso manter a ordem de 2 caracteres e inverter sucessivamente. Por exemplo:

public class Teste{
public static void main(String[] args) {

String t = "99E65A78";

// A saída deveria ser 785AE699.

Sei deste método para inverter Strings, mas o mesmo inverte tudo, não mantendo a ordem de 2 caracteres.

StringBuffer sb = new StringBuffer(t);

sb.reverse();

System.out.println(sb);

Agradeço a quem puder ajudar!!

8 Respostas

rodriguesabner

Nunca precisei disso, dá uma olhada no código:

public class StringDemo {
  public static void main(String[] args) {
    String palindrome = "Dot saw I was Tod";
    int len = palindrome.length();
    char[] tempCharArray = new char[len];
    char[] charArray = new char[len];
    // put original string in an array of chars
    for (int i = 0; i < len; i++) {
      tempCharArray[i] = palindrome.charAt(i);
    }
    // reverse array of chars
    for (int j = 0; j < len; j++) {
      charArray[j] = tempCharArray[len - 1 - j];
    }
    String reversePalindrome = new String(charArray);
    System.out.println(reversePalindrome);
  }
}

fonte: Inverter uma String

G

Então amigo, nesse caso este programa retorna a String completamente ao contrário. Por exemplo “99E65A78” está retornando “87A56E99”, quando na verdade deveria retornar “785AE699”. Este código equivale a este aqui…

public class LittleEndian {
public static void main(String[] args) {

String t = "99E65A78";
	
	StringBuffer sb = new StringBuffer(t);
	sb.reverse();
	System.out.println(sb);

Estou com dificuldade em deixar como retorno a String “785AE699”, ou seja, invertendo de 2 em 2 caracteres.

Villagram

Boa noite, amigo.

Gostei desse desafio e fiz um método que faz exatamente isso, espero que ajude no seu aprendizado:

public class Programa {

public static void main(String[] args){
    String t = "99E65A78";
    Programa p = new Programa();
    System.out.println(p.dinamicInverter(2, 2, t));
}

/**
 * Este método inverte a string de forma dinâmica mantendo a posição de
 * caracteres no fim da string e invertendo o restante na quantidade
 * especificada.
 *
 * <html>
 *     <p>Exemplo:</p>
 *     <p>manter = 2, invertQuant = 2, string = "99E65A78"</p>
 *     <p>Saída: 785AE699</p>
 * </html>
 *
 * @param manter Quantidade de caracteres a se manter
 * @param invertQuant Quantidade de caracteres a inverter
 * @param string String que será invertida
 * @return String invertida como solicitado
 */
public String dinamicInverter(int manter, int invertQuant, String string){
    manter = manter < 0 ? 0 : manter;
    invertQuant = invertQuant <= 0 ? 1 : invertQuant;
    String resultado = string.substring(string.length() - manter, string.length());
    String str = string.substring(0, string.length() - manter);
    while(str.length() > 0){
        if((str.length() - invertQuant) < 0){
            resultado += str.substring(0, str.length());
            break;
        }
        resultado += str.substring(str.length() - invertQuant, str.length());
        str = str.substring(0, str.length() - invertQuant);
    }
    return resultado;
}
}

Boa sorte a todos. :metal::sunglasses::metal:

rodriguesabner

Porra villagram… Vc não perde uma mano kkkkkk. Todos os posts o cara manja de alguma coisa. Parabéns mesmo!

G

Uau Villagram era exatamente isso!! Muito bonito o código e com certeza vou estudar ele para aprender mais!! Muito obrigado a você e a todos que ajudaram!!

Um abraço.

Villagram

Muito obrigado amigo, também gosto dos seus posts, seus códigos tbm são muito bons. Eu sempre procuro alguma post que ninguém respondeu ou que não encontraram a solução, quando você tenta resolver, mesmo que seja um problema pequeno e tbm as vezes em uma linguagem que você não domina, você cresce mais do que estudando documentação.

:metal::sunglasses::metal:

Villagram

Bom aprendizado fera, ainda bem que consegui ajudar. :metal::sunglasses::metal:

staroski

Só por curiosidade, estás fazendo um conversor de BIG ENDIAN para LITTLE ENDIAN e vice-versa?

Criado 19 de janeiro de 2019
Ultima resposta 20 de jan. de 2019
Respostas 8
Participantes 4