문자열 반전은 자바 기술 인터뷰에서 가장 자주 묻는 질문 중 하나입니다. 면접관은 문자열을 뒤집는 다양한 방법을 작성하도록 요청하거나 내장된 메서드를 사용하지 않고 문자열을 뒤집을 것을 요청할 수 있습니다. 또는 재귀를 사용하여 문자열을 뒤집을 수도 있습니다.
다음은 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에서 toString()을 재정의하는 이유
- 자바에서 문자열을 비교하는 방법
- 문자열에서 숫자를 추출하는 방법
- Java에서 String을 Int로 변환하는 방법
재귀를 사용한 역 문자열
자바에서 문자열을 뒤집는 또 다른 방법은 재귀를 사용하고 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"));
}
}
자바 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"));
}
}