สมมติว่าเรามีสตริง (หรือสตรีมตัวอักษร) ต้องการหาตัวอักษรแรกที่ปรากฏเพียงครั้งเดียว คืนค่าดัชนี หากไม่มี คืนค่า -1
เช่น "people" → 'o' ดัชนี 2; "abaabba" → -1
ขั้นตอนการแก้ปัญหา
- สร้างแผนที่นับความถี่ของแต่ละตัวอักษร
- วนลูปสตริงอีกครั้ง หาตัวแรกที่ความถี่ = 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