Самы просты спосаб змяніць радок у Java

Зварот радка - адно з найбольш часта задаваных пытанняў у тэхнічным інтэрв'ю Java. Інтэрв'юеры могуць папрасіць вас напісаць розныя спосабы адмяніць радок, альбо яны могуць папрасіць вас адмяніць радок, не выкарыстоўваючы убудаваныя метады, альбо могуць папрасіць адмяніць радок з дапамогай рэкурсіі.

Ніжэй прыведзены розныя метады, якія можна выкарыстоўваць для адмены радка ў 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'));
} }


Зваротны радок у 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'));
} }