- 문자열을 문자 배열로 변환하여 반전시킨 후 다시 문자열로 변환하는 방법:
public String reverseString(String str) {
char[] chars = str.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--;
}
return new String(chars); // 문자 배열을 문자열로 변환
}
- StringBuilder나 StringBuffer를 사용하여 문자열을 반전시키는 방법
public String reverseString(String str) {
StringBuilder sb = new StringBuilder(str);
return sb.reverse().toString();
}
- 재귀 함수를 사용하여 문자열을 반전시키는 방법:
public String reverseString(String str) {
if (str.isEmpty()) {
return str;
}
return reverseString(str.substring(1)) + str.charAt(0);
}
일반적으로는 첫 번째 방법인 문자 배열을 이용하는 방법이 성능 면에서 가장 효율적이다.
문자열을 수정할 수 있는 char[] 배열을 사용하므로 문자열을 반전시키기 위해 새로운 문자열 객체를 생성하는 오버헤드가 없다. 따라서 문자열이 매우 크거나 반복적으로 반전시켜야 하는 경우에는 이 방법이 가장 효율적
두 번째 방법인 StringBuilder나 StringBuffer를 사용하는 방법은 문자열을 수정할 수 있는 가변성을 제공하므로 성능이 좋다. 하지만, StringBuilder는 스레드에 안전하지 않고, StringBuffer는 스레드에 안전하지만 성능 면에서는 더 느릴 수 있다.
세 번째 방법은 재귀 함수를 사용하여 문자열을 반전시키는 방법, 이 방법은 간단하지만, 재귀 호출의 깊이가 문자열의 길이에 비례하므로 큰 문자열에서는 스택 오버플로우의 위험이 있을 수 있다. 따라서 문자열의 길이가 작거나 재귀 호출의 깊이에 대한 제한이 있는 경우에 사용하는 것이 적합
'의문점 공부하기 > 📌 Java' 카테고리의 다른 글
📌 String 클래스의 일반적인 메서드는 무엇이 있을까? (2) | 2023.06.13 |
---|---|
📌 String str ="i"와 String str = new String("i")가 동일 할까? (0) | 2023.06.12 |
📌 String은 기본 데이터 타입일까? (0) | 2023.06.08 |
📌 자바에서 문자열을 조작하는 클래스는 무엇이 있을까? 각 클래스의 차이점은? (0) | 2023.06.07 |
📌 자바에서 Math.round(-1.5)는 무엇을 의미할까? (0) | 2023.06.05 |