have to/자바 알고리즘
문자열 겹쳐쓰기 문제 - 개선
chaeyoung-
2023. 10. 24. 12:24
30분 고민해서 나온 코드와 이에 따른 개선 후의 코드이다.
해당 문제 풀 때의 나의 문제점 : 시간이 많이 소요됨. 코드가 길다
1. 개선 전 코드
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = my_string.substring(0,s);
int arr1_length = my_string.length();
int arr2_length = overwrite_string.length();
for(int j=0; j<overwrite_string.length(); j++){
answer += overwrite_string.charAt(j);
}
int sub_length = arr1_length - arr2_length - s;
if(sub_length>0){
for(int i=s+arr2_length; i<arr1_length; i++){
answer += my_string.charAt(i);
}
}
return answer;
}
}
개선 사항
▶ 코드 줄이기.
1. String을 for문 합치지 않고, + 연산자로 변경.
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = my_string.substring(0,s) + overwrite_string;
int arr1_length = my_string.length();
int arr2_length = overwrite_string.length();
int sub_length = arr1_length - arr2_length - s;
if(sub_length>0){
for(int i=s+arr2_length; i<arr1_length; i++){
answer += my_string.charAt(i);
}
}
return answer;
}
}
2. substring() 함수로만 작성하기.
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = my_string.substring(0,s) //0번 인덱스 부터 s-1번 인덱스까지
+ overwrite_string
+ my_string.substring(s+overwrite_string.length());
return answer;
}
}
references: https://school.programmers.co.kr/learn/courses/30/lessons/181943