자바의 String 자료형에는 많은 연산자 기능들이 있다.
프로그래밍의 기본기를 익히기 위해 일부 연산자들을 제한하고 다음의 기능을 구현하려 한다.
입력 문자열 | from | to | 출력 |
"Hello Java, Nice to meet you! Java is fun!" | "Java" | "자바" | "Hello 자바, Nice to meet you! 자바 is fun!" |
POP | P | W | WOW |
public static String solution(char[] str, char[] find, char[] to) {
int idx = 0;
String replaceStr = "";
char[] replaceBucket = str.clone();
do {
idx = findIndex(replaceBucket, find);
if (idx != -1){
for (int i = 0; i < idx; i++) {
replaceStr +=replaceBucket[i];
}
for (int i = 0; i < to.length; i++) {
replaceStr += to[i];
}
for (int i = idx + find.length; i < replaceBucket.length ; i++) {
replaceStr += replaceBucket[i];
}
replaceBucket = replaceStr.toCharArray();
replaceStr = "";
}
} while(idx != -1);
replaceStr = new String(replaceBucket);
return replaceStr;
}
public static int findIndex(char[] str, char[] find) {
int idx = -1;
boolean isMatch = false;
for (int i = 0; i < str.length; i++) {
if (str[i] == find[0] && str.length - i >= find.length){
isMatch = true;
for (int j = 1; j < find.length; j++){
if (str[i + j] != find[j]){
isMatch = false;
break;
}
}
}
if (isMatch){
idx = i;
break;
}
}
return idx;
}
solution
findIndex
do-while
public static String solution(char[] str, char[] find, char[] to) {
String ans = "";
for(int i = 0; i < str.length; i++){
if (str[i] !=find[0]){
ans+=str[i];
} else {
boolean check = false;
for(int j = 0; j < find.length; j++){
if (find[j] == str[i+j]){
check = true;
} else {
check = false;
break;
}
}
if (check == false){
ans+=str[i];
} else {
ans+= String.valueOf(to);
i += find.length-1;
check = false;
}
}
}
return ans;
}
[Java] 연습문제5 - 배열 내 가장 넓은 면적 구하기 (0) | 2023.01.08 |
---|---|
[Java] 연습문제4 - 여러가지 별 찍기 (0) | 2023.01.08 |
[Java] 연습문제2 - ASCII코드 대소문자 상호 변환 (1) | 2023.01.07 |
[Java] 연습문제1 - 정수 자료형 숫자 거꾸로 변환 (0) | 2023.01.07 |
[Java] 반복문(while - do) (0) | 2023.01.03 |
댓글 영역