class Solution {
public long solution(String numbers) {
long answer = 0;
String num = "";
int i =0;
while(i<numbers.length()) {
char alpha = numbers.charAt(i);
switch(alpha) {
case 'o' : num += 1;
i += 3;
break;
case 'z' : num += 0;
i += 4;
break;
case 't' : if(numbers.charAt(i+1) == 'w') {
num += 2;
i += 3;
} else {
num += 3;
i+= 5;
}
break;
case 'f' : if(numbers.charAt(i+1) == 'o') {
num += 4;
} else {
num += 5;
}
i += 4;
break;
case 's' : if(numbers.charAt(i+1) == 'i') {
num += 6;
i += 3;
} else {
num += 7;
i += 5;
}
break;
case 'e' : num += 8;
i += 5;
break;
case 'n' : num += 9;
i+= 4;
break;
}
}
answer = Long.parseLong(num);
return answer;
}
}
너무 길고, 지저분하다.. 다른 풀이를 보고 배우자
다른 풀이 둘 다 replaceAll()을 사용했다!
뭔가 특정 원소 삭제, 대체.. 같은경우 replace를 생각하자!!!
class Solution {
public long solution(String numbers) {
String[] numbers_arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < numbers_arr.length; i++) {
numbers = numbers.replaceAll(numbers_arr[i], String.valueOf(i));
}
long answer = Long.parseLong(numbers);
return answer;
}
}
class Solution {
public long solution(String numbers) {
return Long.parseLong(
numbers.replaceAll("zero", "0")
.replaceAll("one", "1")
.replaceAll("two", "2")
.replaceAll("three", "3")
.replaceAll("four", "4")
.replaceAll("five", "5")
.replaceAll("six", "6")
.replaceAll("seven", "7")
.replaceAll("eight", "8")
.replaceAll("nine", "9")
);
}
}