728x90
반응형
🔶substring
≣ 목차
/ 오늘의 TIL /
Substring
문자열 잘라서 비교 가능
import java.util.*;
public class Main {
/**
* @param msg 문자열
* @return map key 배열
*/
public static int[] solution(String msg) {
Map<String, Integer> alphabet = new LinkedHashMap<>();
//알파벳 초기화
for (int i = 0; i < 26; i++) {
alphabet.put(String.valueOf((char)('A' + i)), i+1);
}
List<Integer> result = new ArrayList<>();
int idx = 0;
//msg 문자열 길이 -1 만큼 진행(문자열 두 글자 이상씩 비교 필요)
while (idx < msg.length()-1) {
//임시 문자열(key 비교 대상)
String tmp = "";
//전 문자열
String pre = String.valueOf(msg.charAt(idx));
//비교대상 문자열 ~ 마지막 길이 문자까지 문자 더하면서 비교
for (int i = 1; idx+i <= msg.length(); i++) {
//i글자만큼 문자열을 잘라서 임시로 저장해둔다.
tmp = msg.substring(idx, idx+i);
//키가 없는 경우
if (!alphabet.containsKey(tmp)) {
//key로 추가한다.
alphabet.put(tmp, alphabet.size()+1);
break;
}
//가장 긴 문자열에 대해 key 값을 수정한다. (변경 예시: K 저장 -> KA 저장)
pre = tmp;
}
//key에 맞는 값을 가져와서 저장한다.
result.add(alphabet.get(pre));
//key로 추가한 값 다음부터 인덱스 시작
idx = idx + pre.length();
}
if (idx == msg.length()-1) {
result.add(alphabet.get(String.valueOf(msg.charAt(idx))));
}
return result.stream().mapToInt(i -> i).toArray();
}
public static void main(String[] args) {
String a = "KAKAO";
int[] solution = solution(a);
for (int i : solution) {
System.out.println(i);
}
}
}
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
[240618] 트리 + 해시맵 (0) | 2024.06.18 |
---|---|
[240617] 트리 (0) | 2024.06.17 |
[240614] stream, lombok (0) | 2024.06.14 |
[240613] java8 stream (0) | 2024.06.13 |
[240612] swagger ui api 사용하기 (0) | 2024.06.12 |
댓글