반응형
class Solution:
def firstUniqChar(self, s: str) -> int:
dict_ = dict()
for char in s:
dict_[char] = dict_.get(char, 0) + 1
for i in list(dict_.keys()):
if dict_[i] == 1:
return s.index(i)
return -1
한번에 풀긴했음.근데 이건 python 3.7+ 에만 적용 가능( dictionay input 키 순서가 유지된다는 전제 필요)
하지만 index, 알파벳, 각 알파벳이 나오는 횟수 3가지 정보를 저장하는 효율적인 방법은??
def firstUniqChar(s: str) -> int:
letters = 'abcdefghijklmnopqrstuvwxyz'
index = [s.index(l) for l in letters if s.count(l) == 1]
# 하나만 있는 char의 index들을 저장
return min(index) if len(index) > 0 else -1
빠른 이유는?
- string의 index 함수가 c함수이기 떄문
d = {}
for l in s:
if l not in d: d[l] = 1
else: d[l] +=1
index = -1
for i in range(len(s)):
if d[s[i]]==1:
index=i
break
이게 제일 범용적으로 사용할 수 있는 코드 같음
class Solution:
def firstUniqChar(self, s: str) -> int:
d = {}
for l in s:
if l not in d: d[l] = 1
else: d[l] +=1
index = -1
for i in range(len(s)):
if d[s[i]]==1:
index=i
break
return index
반응형
'코딩테스트' 카테고리의 다른 글
Leetcode 125. Valid Palindrome (0) | 2022.10.02 |
---|