자바에서 문자열을 뒤집는 여러가지 방법을 설명드리겠습니다.
반복문 사용
단순 반복문을 사용해서 문자열을 뒤집을 수 있습니다.
public static void main(String[] args) {
String s = "12345";
String reverseStr = "";
for (int i = 1; i <= s.length(); i++) {
reverseStr += s.charAt(s.length() - i);
}
System.out.println("reverseStr = " + reverseStr); // 54321
}
뒤집을 문자열을 담을 새로운 문자열을 생성하고 기존 문자열을 뒤에서부터 한글자씩 가져와서 새로운 문자열에 합치는 코드입니다.
배열 사용
문자열을 배열로 변환해서 뒤집을 수 있습니다.
public static void main(String[] args) {
String s = "12345";
char[] chars = s.toCharArray();
int left = 0;
int right = chars.length - 1;
while (left < right) {
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
String reverse = new String(chars);
System.out.println("reverse = " + reverse); // 54321
}
문자열을 char 배열로 변환 후에 0번째는 마지막 요소랑, 1번째는 마지막에서 1을 뺀 위치에 있는 요소랑, 그렇게 마지막 원소랑 0번째 요소까지 교환을 진행합니다.
StringBuilder reverse 함수 사용
public static void main(String[] args) {
String s = "12345";
StringBuilder sb = new StringBuilder(s);
sb.reverse();
System.out.println("sb = " + sb); // 54321
}
StringBuilder에는 reverse() 메소드가 있습니다.
문자열을 StringBuilder 객체로 변환해서 reverse 메소드를 사용하면 문자열을 쉽게 뒤집을 수 있습니다.
Stream 사용
public static void main(String[] args) {
String s = "12345";
String reverse = IntStream.range(0, s.length())
.mapToObj(i -> s.charAt(s.length() - i - 1))
.map(Object::toString)
.collect(Collectors.joining());
System.out.println("reverse = " + reverse); // 54321
}
IntStream을 사용해서 0에서 문자열 길이까지 반복합니다.
배열을 사용했을 때처럼 서로 반대되는 위치에 있는 요소끼리 뒤집어줍니다.
그리고 문자열로 변환한 후 Collectors.joining()으로 합쳐줍니다.
읽으면 좋은 글