문제 풀이/프로그래머스
프로그래머스 lv0 문자열뒤집기
춘핑이
2023. 8. 31. 12:05
문제
문자열 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);
}