Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 문자 스트림에서 첫 번째 비반복 문자 찾기


문자열이 있다고 가정하거나 문자열을 고려할 수 있으며 문자열에서 반복되지 않는 첫 번째 문자를 찾아야 합니다. 따라서 문자열이 "people"과 같으면 첫 번째 문자가 1인 경우 'o'입니다. 따라서 인덱스가 반환됩니다. 여기서는 2입니다. 해당 문자가 없으면 -1을 반환합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 하나의 주파수 맵 생성

  • 문자열의 각 문자 c에 대해

    • 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