🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Algoritmos

Como Resolver o Reverse Integer do LeetCode em Java

Explore em detalhes como resolver um dos problemas clássicos do LeetCode usando lógica pura em Java. Ideal para entrevistas técnicas.

CrazyStack
12 min de leitura
LeetCodeJavaAlgoritmosEntrevista Técnica

Por que isso é importante

O problema Reverse Integer é amplamente utilizado em entrevistas técnicas por empresas como Google, Amazon e Meta. Entender sua resolução ajuda a aprimorar raciocínio lógico, manipulação de dados e domínio de estruturas numéricas.

O Que é o Reverse Integer?

O desafio consiste basicamente em inverter os dígitos de um número inteiro. Por exemplo, dado 123 o retorno deve ser 321. Para números negativos, como -456, a saída correta será -654.

Regras da Entrevista

O problema é classificado como médio, mas na prática tem uma solução simples se bem argumentada. Pode ser usado como medidor inicial da forma como você estrutura e valida código.

Cuidados com Overflow

Como estamos lidando com inteiros de 32 bits, devemos incluir uma verificação para integer overflow. Se o valor final não couber no intervalo do tipo integer, a função deve retornar 0.

Lógica Utilizando Strings

Uma abordagem inicial simples seria converter o inteiro para string, iterar seus caracteres de trás para frente, e construir a nova string invertida. Simples, porém não ideal para performance.

⚠️Atenção

Strings são imutáveis. A cada concatenação, uma nova string é criada, impactando negativamente a memória. Em Python isso é evidente, mas em Java também há implicações.

Lógica Matematizada

A solução performática usa apenas matemática. Extraímos os dígitos com módulo e divisão inteira por 10, construindo o número invertido multiplicando o resultado parcial por 10 e somando o dígito extraído.

1
Passo 1: Verifique se o número é negativo e salve o sinal.
2
Passo 2: Converta o número para valor absoluto.
3
Passo 3: Enquanto o número for diferente de zero, pegue o último dígito com módulo 10.
4
Passo 4: Multiplique o resultado parcial por 10 e adicione o dígito atual.
5
Passo 5: Verifique antes de cada inclusão se haverá overflow. Se sim, retorne 0.
6
Passo 6: Após o loop, retorne a resposta multiplicada pelo sinal original.

ℹ️Importante

Sempre prefira manipular tipos primitivos. Isso reduz sobrecarga e melhora a performance geral do código, especialmente em entrevistas cronometradas.

Código Final em Java

Abaixo está uma implementação prática, segura contra overflow e otimizada em tempo e espaço com complexidade O(n).

public int reverse(int x) {
  int result = 0;
  while (x != 0) {
    int digit = x % 10;
    x /= 10;
    if (result > Integer.MAX_VALUE / 10 || result < Integer.MIN_VALUE / 10) {
      return 0;
    }
    result = result * 10 + digit;
  }
  return result;
}

Cuidado com Gravações

Ao gravar vídeos com códigos de terceiros, sempre peça autorização prévia ou use trechos pequenos com créditos para evitar strikes.

Validação do Resultado

Ao submeter no LeetCode, a função passou em todos os testes, reforçando que a implementação está correta e eficiente para o propósito da entrevista.

ℹ️Entrevista não é código de produção

Muitas soluções ensinadas para entrevistas são projetadas para avaliar raciocínio e conhecimento. Elas não são obrigatoriamente parecidas com a prática no dia a dia.

Diferentes Linguagens, Diferentes Cuidados

Algumas linguagens tratam overflow com exceção, outras como Python ignoram limite de 32 bits. Em entrevistas com Java, esse cuidado é obrigatório.

Por Que o LeetCode Usa Este Problema?

É uma forma prática de avaliar conhecimento de manipulação numérica, controle de exceções e leitura do problema.

Conclusão

Resolver o Reverse Integer não é só inverter números. É estruturar raciocínio, prever exceções e mostrar domínio matemático. Pratique, explique seu raciocínio e evite mágica.

Checklist de Implementação

Identificou a necessidade de preservar o sinal
Lidou corretamente com overflow
Evite uso de string para eficiência
Testou vários casos no LeetCode including valores máximos e negativos

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo