First Unique Character in a String - LeetCode
처음으로 등장한 유일한 문자의 위치를 출력해보자.
class Solution:
def firstUniqChar(self, s: str) -> int:
d=dict()
M=(10**5)+1
for i in range(len(s)):
if s[i] not in d:
d[s[i]]=i
else:
d[s[i]]=M
char=list(d.values())
answer=min(char)
if answer==M:
return -1
else:
return answer
딕셔너리로 중복을 체크하면서 각 문자가 등장한 인덱스를 저장한다. 중복 등장하는 값이 있다면 최대값(배열의 길이+1)으로 변경해준다.
밸류값 중 가장 작은 값을 찾아서 그 값이 최대값과 같지 않을 경우만 출력한다. 가장 작은 값이 최댓값이라면 모든 문자가 중복되었다는 의미이므로 -1을 출력한다.
딕셔너리 작성 시 O(n), 최솟값 계산 시 O(n)이 걸린다.