✍스펙업/코딩테스트

자바 문자열 뒤집기 StringBuilder 객체로 풀어보기

우동한그릇 2023. 7. 9. 14:40
반응형

문제 설명

문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • my_string은 숫자와 알파벳으로만 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ s  e < my_string의 길이

입출력 예

 


입출력 예 설명

입출력 예 #1

  • 예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.

입출력 예 #2

  • 예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.

문제코드 : 

public class Solution {
    public static String solution(String myString, int s, int e) {
        StringBuilder result = new StringBuilder(myString);
        StringBuilder reversedSubstring = new StringBuilder(myString.substring(s, e + 1)).reverse();
        result.replace(s, e + 1, reversedSubstring.toString());
        return result.toString();
    }
}

 

문제풀이 :

우선 이 문제는 Stringbuilder 를 사용하는 것이 좋다.

왜냐하면 문자열은 불변 자료형이기 때문에 한번 생성된 것을 수정할 수 없기 때문이다.

반면 StringBuilder는 가변성을 가진 클래스이기때문에 수정할 수 있고,

문자열의 길이가 긴 경우에 더욱 효율적이다

 

1. result라는 myString(원본) 의 객체를 생성한다.

2. reversedSubstring 이라는 객체를 생성하는데,

    이것은 원본을 s부터 e+1까지의 문자열을 뒤집어서 저장한 것이다.

    여기서 subString은 (1,3) 일경우 1,2까지를 포함하기때문에.

     e의 위치까지 포함하기 위해 +1을 해주었다.

3. 원본 객체인 result에 replace를 사용하여 s부터 e+1까지를 아까 생성했던,

    뒤집힌 s부터 e+1까지의 문자열이 담긴 tostring으로 변환한 string 객체를 대체해준다.

4. 저장한 result 객체를 tostring으로 문자열로 만들어주어 반환한다.

반응형