Inverter String em Java Usando Recursão – Guia Passo a Passo
Inverter String em Java Usando Recursão
Recursão é uma técnica poderosa para resolver problemas que podem ser divididos em sub-problemas menores e similares. Inverter uma string é um exemplo clássico que demonstra como uma função recursiva simples pode lidar elegantemente com manipulação de strings.
Por que Usar Recursão?
- Clareza conceitual – a função espelha naturalmente a definição do problema.
- Código mínimo – apenas algumas linhas são necessárias para realizar a inversão.
- Valor educacional – ajuda a reforçar o padrão caso-base / passo-recursivo.
Implementação em Java
O programa a seguir lê uma string, aplica um método de inversão recursiva e imprime o resultado.
package com.guru99;
public class ReverseString {
public static void main(String[] args) {
String myStr = "Guru99";
String reversed = reverseString(myStr);
System.out.println("A string invertida é: " + reversed);
}
/**
* Inverte recursivamente a string dada.
* @param str a string a inverter
* @return a string invertida
*/
public static String reverseString(String str) {
if (str.isEmpty()) {
return ""; // Caso base: string vazia é sua própria inversa
}
// Recorre na substring que exclui o primeiro caractere
return reverseString(str.substring(1)) + str.charAt(0);
}
}
Saída Típica
A string invertida é: 99uruG
Entendendo o Fluxo
A recursão funciona removendo repetidamente o primeiro caractere e anexando-o ao resultado da inversão da substring restante. Quando a substring se torna vazia, a recursão desenrola, concatenando caracteres em ordem inversa.
Casos Extremos e Desempenho
- String Vazia – tratada pelo caso base, retornando string vazia imediatamente.
- Entrada Nula – você pode adicionar verificação de null para evitar
NullPointerException. - Complexidade de Tempo – O(n) para tempo e espaço devido à pilha de recursão.
Conclusão
Inversão de string recursiva é concisa e demonstra pensamento algorítmico central. Para código de produção onde desempenho é crítico, uma abordagem iterativa ou usando StringBuilder é preferível devido ao menor uso de pilha.
Java
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Representações String em Enums Java
- Criando Array de Objetos em Java: Guia Passo a Passo
- Método Java String length(): Como Obter o Tamanho de uma String (Exemplo)
- Entendendo Java String.charAt(): Sintaxe, Tipo de Retorno, Exceções e Exemplo Prático
- Dominando o Método compareTo() do Java String: Sintaxe, Casos de Uso e Exemplos Práticos
- Dominando Java String.endsWith(): Como Verificar Sufixos de String com Exemplos
- Dominando Substituição de Strings em Java: replace(), replaceAll() e replaceFirst() Explicados
- Convertendo Char para String em Java – Exemplos Práticos e Melhores Práticas
- Gerar Sequência de Fibonacci em Java: Exemplos com For, While e Recursão