Il modo più semplice per invertire una stringa in Java

L'inversione di una stringa è una delle domande più frequenti in un'intervista tecnica Java. Gli intervistatori potrebbero chiederti di scrivere modi diversi per invertire una stringa, oppure potrebbero chiederti di invertire una stringa senza utilizzare metodi incorporati, oppure potrebbero persino chiederti di invertire una stringa usando la ricorsione.

Di seguito sono riportati vari metodi che è possibile utilizzare per invertire una stringa in Java.



Stringa inversa in Java, modo più semplice

Il modo più semplice per invertire una stringa in Java è utilizzare il built-in reverse() funzione di StringBuilder classe.


Esempio:

package io.devqa.tutorials; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class ReverseString {
String reverse(String inputString) {
return new StringBuilder(inputString).reverse().toString();
}
@Test
public void testAWord() {
assertEquals('tobor', new ReverseString().reverse('robot'));
} }

Relazionato:




Stringa inversa usando la ricorsione

Un altro modo per invertire una stringa in java è usare la ricorsione e utilizzare charAt() metodo del String classe

Esempio:

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class ReverseString {
String reverse(String inputString) {

StringBuilder reverseStringBuilder = new StringBuilder();

for(int i = inputString.length() - 1; i>=0; i--){

reverseStringBuilder.append(inputString.charAt(i));
}

return reverseStringBuilder.toString();
}
@Test
public void testAWord() {
assertEquals('tobor', new ReverseString().reverse('robot'));
} }

Una variazione di quanto sopra consiste nell'usare i toCharArray() e scorrere i caratteri, ad esempio:

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class ReverseString {
String reverse(String inputString) {
String outString = '';
for(char c : inputString.toCharArray()) {

outString = c + outString;
}
return outString;
}
@Test
public void testAWord() {
assertEquals('tobor', new ReverseString().reverse('robot'));
} }


Stringa inversa in Java 8

import org.junit.jupiter.api.Test; import java.util.stream.Collectors; import java.util.stream.IntStream; import static org.junit.jupiter.api.Assertions.assertEquals; class ReverseString {
String reverse(String inputString) {
return IntStream.range(0, inputString.length())

.mapToObj(x-> inputString.charAt((inputString.length()-1) - x))

.map(character -> String.valueOf(character))

.collect(Collectors.joining(''));
}
@Test
public void testAWord() {
assertEquals('tobor', new ReverseString().reverse('robot'));
} }