Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาอักขระที่ไม่ซ้ำตัวแรกจากสตรีมของอักขระใน Python


สมมติว่าเรามีกระแสของอักขระ หรือเราสามารถพิจารณาสตริงและเราต้องหาอักขระที่ไม่ซ้ำตัวแรกในสตริง ดังนั้น หากสตริงเป็นเหมือน "คน" อักษรตัวแรกที่เกิดขึ้นจะเป็นตัว "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