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.
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:
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'));
} }
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'));
} }