Det enklaste sättet att vända en sträng i Java

Att vända en sträng är en av de vanligaste frågorna i en teknisk Java-intervju. Intervjuarna kan be dig att skriva olika sätt att vända en sträng, eller de kan be dig att vända en sträng utan att använda inbyggda metoder, eller de kan till och med be dig att vända en sträng med rekursion.

Nedan följer olika metoder som du kan använda för att vända en sträng i Java.



Omvänd sträng i Java, enklaste sättet

Det enklaste sättet att vända en sträng i Java är att använda den inbyggda reverse() funktion för StringBuilder klass.


Exempel:

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

Relaterad:




Omvänd sträng med rekursion

Ett annat sätt att vända en sträng i java är att använda rekursion och använda charAt() metod för String klass

Exempel:

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

En variation av ovanstående är att använda toCharArray() och slingra över karaktärerna, till exempel:

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


Omvänd sträng i 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'));
} }