[문제]
문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
[내 풀이]
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
for (int i = 0; i < my_string.length(); i++){
if(i>=s && i< s + overwrite_string.length()){
answer += overwrite_string.charAt(i-s);
}
else{
answer += my_string.charAt(i);
}
}
return answer;
}
}
[에러 및 해결]
<기존 코드>
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
int k = 0;
for (int i = 0; i < overwrite_string.length(); i++){
k = s+i;
my_string.charAt(k) = overwrite_string.charAt(i);
}
return my_string;
}
}
- 단순히 my_string의 특정 위치들의 문자들을 대체하려고 했으나, my_string은 불변,
--> 새로운 문자열에 문자를 대입하는 형태로 해결
[다른 사람 풀이]
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String before = my_string.substring(0, s);
String after = my_string.substring(s + overwrite_string.length());
return before + overwrite_string + after;
}
}
-> overwrite_string이 들어갈 부분의 앞, 뒤 부분을 my_string에서 빼와서 다시 합쳐 새로운 문자열 생성
(substring()함수 이용)
str.substring(5); //str 문자열에서 index 값이 5인 위치 이후 값을 다 가져와라
str.substring(0, 3) //index 0~2까지의 값 리턴
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
char[] my_chars = my_string.toCharArray();
char[] overwrite_chars = overwrite_string.toCharArray();
for (int i=0; i<overwrite_chars.length; i++) {
my_chars[s + i] = overwrite_chars[i];
}
return String.valueOf(my_chars);
}
}
-> 나의 경우, 이때 char로 바꾼다는 생각을 안하고 다른 방법을 찾았던 것인데, 앞선 포스트에 작성했던 toCharArray()를 이용할 경우, String을 배열로 쪼개, 배열을 수정함으로써 문제 해결 가능
'개발 > 코테' 카테고리의 다른 글
[JAVA] 문자 리스트를 문자열로 변환하기 (0) | 2024.03.26 |
---|---|
[JAVA] 문자열 섞기 (0) | 2024.03.26 |
[JAVA] 홀짝 구분하기 (0) | 2024.03.26 |
[JAVA] 문자열 돌리기 (0) | 2024.03.26 |
[JAVA] 문자열 붙여서 출력하기 (0) | 2024.03.26 |