Обращение строки - один из наиболее часто задаваемых вопросов на техническом собеседовании по 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'));
} }