문제

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

내 코드

매우 단순하게 풀었다.
먼저 char배열로 만들고 바꿀부분을 복사한 새로운 배열로 만들었다.
단순하게 해당 위치를 역순으로 넣어주었다.

public String solution(String my_string, int s, int e) {
    String answer = "";
    char[] oldStr = my_string.toCharArray();
    char[] newStr = new char[e - s + 1];
    System.arraycopy(oldStr, s, newStr, 0, e - s + 1);

    for (int i = s, j = newStr.length; i <= e; i++, j--) {
        oldStr[i] = newStr[j - 1];
    }

    answer = new String(oldStr);
    return answer;
}

다른사람 코드

알고있지만 항상 까먹는 코드이다.
StringBuilder의 reverse()메소드를 사용하면 문자열이 뒤집힌다!!
잊지말자 복잡한 문제는 이렇게 푸는게 훨 씬 쉬울 것이다.

public String solution(String my_string, int s, int e) {
    String answer = "";

    String str = my_string.substring(s, e+1);
    System.out.println(str);

    StringBuilder sb = new StringBuilder(str);
    sb.reverse();
    str = sb.toString();
    System.out.println(str);

    StringBuilder strn = new StringBuilder(my_string);

    for(int i=s;i<=e;i++){
        strn.setCharAt(i, sb.charAt(i-s));
    }

    return String.valueOf(strn);
}

+ Recent posts