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

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

สมมติว่าเรามีสตริง (หรือสตรีมตัวอักษร) ต้องการหาตัวอักษรแรกที่ปรากฏเพียงครั้งเดียว คืนค่าดัชนี หากไม่มี คืนค่า -1

เช่น "people" → 'o' ดัชนี 2; "abaabba" → -1

ขั้นตอนการแก้ปัญหา

  1. สร้างแผนที่นับความถี่ของแต่ละตัวอักษร
  2. วนลูปสตริงอีกครั้ง หาตัวแรกที่ความถี่ = 1

ตัวอย่างโค้ด Python

class Solution:
    def firstUniqChar(self, s):
        frequency = {}
        for ch in s:
            if ch not in frequency:
                frequency[ch] = 1
            else:
                frequency[ch] += 1
        for i in range(len(s)):
            if frequency[s[i]] == 1:
                return i
        return -1

ob1 = Solution()
print(ob1.firstUniqChar("people"))   # 2
print(ob1.firstUniqChar("abaabba"))  # -1

อินพุต

"people", "abaabba"

เอาต์พุต

2 -1