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