문자열이 있고 문자열에서 첫 번째 고유 문자를 찾아야 한다고 가정합니다. 따라서 문자열이 "people"과 같으면 첫 번째 문자가 1인 경우는 'o'입니다. 따라서 인덱스가 반환됩니다. 여기에서는 2입니다. 해당 문자가 없으면 -1을 반환합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 하나의 주파수 맵 생성
- 문자열의 각 문자 c에 대해 do
- c가 주파수에 없으면 주파수에 삽입하고 값 1을 입력
- 그렇지 않으면 빈도 수를 늘리십시오.
- 주파수 맵을 스캔하여 특정 키의 값이 1이면 해당 키를 반환하고 그렇지 않으면 -1을 반환합니다.
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution(object):
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
frequency = {}
for i in s:
if i not in frequency:
frequency[i] = 1
else:
frequency[i] +=1
for i in range(len(s)):
if frequency[s[i]] == 1:
return i
return -1
ob1 = Solution()
print(ob1.firstUniqChar("people"))
print(ob1.firstUniqChar("abaabba")) 입력
"people" "abaabba"
출력
2 -1