Обръщането на низ е един от най-често задаваните въпроси в техническо интервю за Java. Интервюиращите могат да ви помолят да напишете различни начини за обръщане на низ или да поискате да обърнете низ, без да използвате вградени методи, или дори да поискат да обърнете низ, използвайки рекурсия.
По-долу са дадени различни методи, които можете да използвате, за да обърнете низ в Java.
Най-лесният начин да обърнете низ в Java е да използвате вградения reverse()
функция на StringBuilder
клас.
Пример:
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'));
} }
Свързани:
Друг начин за обръщане на низ в Java е използването на рекурсия и използване на charAt()
метод на String
клас
Пример:
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'));
} }
Вариант на горното е да се използва toCharArray()
и се премества над символите, например:
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'));
} }