387. First Unique Character in a String

2026-03-22
리트코드 387번 풀이

문제

First Unique Character in a String

풀이

아이디어

문자열을 한 번 순회하면서 각 문자의 등장 횟수를 Map에 저장해준다. 그리고 다시 문자열을 순회하면서 등장 횟수가 1인 문자가 처음으로 나오는 인덱스를 반환한다. 만약 그런 문자가 없다면 -1을 반환한다.

코드

function firstUniqChar(s: string): number {
  const map = new Map();

  for (let c of s) {
    if (map.has(c)) map.set(c, map.get(c) + 1);
    else map.set(c, 1);
  }

  for (let idx = 0; idx < s.length; idx++) {
    if (map.get(s[idx]) === 1) return idx;
  }

  return -1;
}

시간 / 공간 복잡도

  • 시간 복잡도: O(n)
  • 공간 복잡도: O(1) — 알파벳 소문자만 등장하므로 Map 크기는 최대 26 (상수이므로 1)