해시
문자열을 key로 인덱스를 value로 하는 Map 객체를 만듭니다.
Map에 이미 key가 존재한다면 그 키의 인덱스를 현재 인덱스로 변경하고 정답 배열에 (현재 인덱스 - 있던 인덱스)를 삽입합니다.
존재하지 않는다면 현재 인덱스를 저장하고 -1을 배열에 삽입합니다.
정답 배열을 반환합니다.
function solution(s) {
const answer = [];
const map = new Map();
// 문자열을 key로 인덱스를 value로
// 이미 인덱스가 있다면 현재 인덱스를 저장하고 현재 인덱스 - 있는 인덱스를 배열에 삽입
// 없다면 현재 인덱스를 저장하고 -1를 배열에 삽입
for (let i = 0; i < s.length; i++) {
if (map.has(s[i])) {
const prev_idx = map.get(s[i]);
map.set(s[i], i);
answer.push(i - prev_idx);
} else {
map.set(s[i], i);
answer.push(-1);
}
}
return answer;
}