def solution(s):
number = [
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
]
idx = 0
word = ""
flag = False
ans = ""
while idx < len(s):
if flag == True:
word += s[idx]
if word in number:
ans += str(number.index(word))
word = ""
flag = False
else:
try:
k = int(s[idx])
ans += str(k)
except:
flag = True
word += s[idx]
idx += 1
return int(ans)
class Solution {
public int solution(String s) {
String[] number = new String[]{
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
};
int idx = 0;
String ans = "";
boolean flag = false;
String word = "";
while (idx < s.length()) {
if (flag == true) {
word += s.charAt(idx);
System.out.println(word);
for (int i = 0; i < 10; i++) {
if (word.equals(number[i])) {
ans += String.valueOf(i);
word = "";
flag = false;
break;
}
}
} else {
try {
int k = Integer.parseInt(String.valueOf(s.charAt(idx)));
ans += String.valueOf(s.charAt(idx));
} catch(Exception e) {
word = String.valueOf(s.charAt(idx));
flag = true;
}
}
idx += 1;
}
int answer = Integer.parseInt(ans);
return answer;
}
}
배열 인덱스에 맞춰 영어 문자를 넣어주었고 예외처리를 이용하여 영문자인지 숫자문자인지를 구분했다.
flag는 영어문자를 인식하고 올바른 영어 문자가 나올때까지 구분하는 용도로 만들어 주었다.