유형: 문자열
프로그래머스 - 숫자 문자열과 영단어
주어지는 문자열에서 영단어를 숫자로 변경하는 문제이다.
HashMap
에 영단어를 차례대로 저장하고, 문자열의 문자를 하나씩 순회하며 답을 만들어갔다.
Character.isDigit(s.charAt(i))
temp
에 문자 저장temp
가 있는지 확인import java.util.*;
class Solution {
public int solution(String s) {
String[] alphabet = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
map.put(alphabet[i], i);
}
StringBuilder temp = new StringBuilder();
StringBuilder answer = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) { // 숫자
answer.append(s.charAt(i));
} else {
temp.append(s.charAt(i));
if (map.containsKey(temp.toString())) { // 영어
answer.append(map.get(temp.toString()));
temp.setLength(0);
}
}
}
return Integer.parseInt(answer.toString());
}
}
나는 왜 replaceAll
을 생각해내지 못했을까...!!
이토록 짧고 쉽고 간단한 방법이 있었다니... 이렇게 또 하나 배운다
class Solution {
public int solution(String s) {
String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < strArr.length; i++) {
s = s.replaceAll(strArr[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
}