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

ตัวอักษรที่ไม่ซ้ำตัวแรกในสตริงใน Python

สมมติว่าเรามีสตริง และเราต้องหาตัวอักษรที่ไม่ซ้ำตัวแรกในสตริง เช่นถ้าสตริงเป็น "people" ตัวอักษรแรกที่เกิดขึ้นครั้งเดียวคือ 'o' ดังนั้นดัชนีที่คืนค่าจะเป็น 2 ถ้าไม่มีตัวอักษรแบบนั้น ให้คืนค่า -1

วิธีการแก้ปัญหา

  • สร้างแผนที่ความถี่ (frequency map) หนึ่งอัน
  • สำหรับแต่ละตัวอักษร c ในสตริง:
    • ถ้า c ไม่อยู่ใน frequency ให้แทรกลงไปใน frequency และตั้งค่าเป็น 1
    • มิฉะนั้น ให้เพิ่มจำนวนใน frequency
  • สแกนแผนที่ frequency ถ้าค่าของคีย์ใดเป็น 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