# First Uniqye Character in a String from collections import Counter class Solution: def firstUniqChar(self, s: str) -> int: c = Counter(s) for key in c: if c[key] == 1: return s.index(key) else: return -1 """ 걸린 시간: 7분 복잡도: s문자열 전체를 순회하므로 O(n)이고, 빈도 수가 1인 것을 체크할때 O(n), 그 문자의 인덱스를 찾을 때 O(n)이므로 전체 시간복잡도는 O(n)이다. 문자열 s 전체에 대한 빈도수를 세기 때문에 공간복잡도를 O(n)이라고 생각할 수 있지만, 소문자만 나온다고 명시되어 있으므로 최대 26개라서 O(1)이다. 해설: dict는 순서 기록이 되기 때문에 빈도수를 기록해놓고 처음으로 빈도 수가 1개인 것의 인덱스를 찾으면 O(n)이겠다고 생각이 들었다. 이건 마지막에 index를 찾는 것까지 3번을 순회하지만 빈도수 1개인 것을 찾을 때 Counter 객체가 아닌 s를 순회하면서 인덱스를 기억하면서 확인하면 2번 순회도 가능하다. """