Practice3
===
문제 설명
---
자바의 String 자료형에는 많은 연산자 기능들이 있다.
프로그래밍의 기본기를 익히기 위해 일부 연산자들을 제한하고 다음의 기능을 구현하려 한다.
- String 의 replace 기능 구현
- String의 replace, indexOf, contains를 사용하지 않고 구현한다.
입출력 예시
---
|입력 문자열|from|to|출력|
|---|---|---|---|
|"Hello Java, Nice to meet you! Java is fun!"|"Java"|"자바"|"Hello 자바, Nice to meet you! 자바 is fun!"|
|POP|P|W|WOW|
public class Practice3 {
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 = true){
idx = i;
break;
}
}
return idx;
}
public static void main(String[] args) {
// Test code
String str = "Hello Java, Nice to meet you! Java is fun!";
String find = "Java";
String to = "자바";
// 기존 String replace
System.out.println(str.replace(find, to));
// 자체 구현 replace
char[] strExArr = str.toCharArray();
char[] findArr = find.toCharArray();
char[] toArr = to.toCharArray();
System.out.println(solution(strExArr, findArr, toArr));
strExArr = "POP".toCharArray();
findArr = "P".toCharArray();
toArr = "W".toCharArray();
System.out.println(solution(strExArr, findArr, toArr));
}
}
'Study for Backend > Programming language - Java' 카테고리의 다른 글
[Java연습] 배열을 이용한 기본 스택 구현 (0) | 2024.02.20 |
---|---|
[Java기초] long, float에 L과 F를 붙여야 하는 이유 (0) | 2024.02.19 |
[Java연습] 사용자가 입력한 알파벳의 대소문자를 변경하는 프로그램 (0) | 2024.02.17 |
[Java연습] 정수 자료형의 숫자를 거꾸로 변환 (0) | 2024.02.17 |
[Java기초] 스트림 (0) | 2024.02.13 |