1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.util.*;
class Solution {
public int[] solution(String msg) {
int[] answer = {};
Map<String, Integer> map = new HashMap<String, Integer>();
List<Integer> list = new ArrayList<Integer>();
int i = 1, j = 0;
char c = 'A';
// 알파벳 초기화
while (c <= 'Z')
map.put(Character.toString(c++), i++);
while (j < msg.length()) {
StringBuilder sb = new StringBuilder();
// 뒷 글자까지 키에 포함되는지 확인
while (j + 1 <= msg.length() && map.containsKey(sb.toString() + msg.substring(j, j + 1))) {
sb.append(msg.substring(j, j + 1));
j++;
}
// 마지막 문자일 경우
if (j == msg.length()) {
list.add(map.get(sb.toString()));
} else {
list.add(map.get(sb.toString()));
map.put(sb.toString() + msg.substring(j, j + 1), i++);
}
}
answer = list.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
|
cs |
Hashmap과 ArrayList를 사용하였다.
'Programmers > Level2' 카테고리의 다른 글
adenCase 문자열 만들기 (0) | 2021.08.06 |
---|---|
순위 검색 (0) | 2021.08.06 |
2개 이하로 다른 비트 (0) | 2021.08.06 |
행렬의 곱셈 (0) | 2021.08.05 |
[3차] 방금그곡 (0) | 2021.08.04 |