สมมติว่าเรามีสตริง s เราต้องหาดัชนีของอักขระที่เกิดซ้ำตัวแรกในนั้น หากเราไม่พบอักขระที่เกิดซ้ำ ให้คืนค่า -1
ดังนั้น หากอินพุตเป็นเหมือน "abcade" เอาต์พุตจะเป็น 3 เนื่องจาก 'a' จะแสดงอีกครั้งที่ดัชนี 3
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดตัวอักษรแผนที่
- สำหรับฉันในช่วง 0 ถึงขนาดของ s ทำ
- ถ้า s[i] เป็นตัวอักษร แล้ว
- คืนฉัน
- มิฉะนั้น
- ตัวอักษร[s[i]] :=ตัวอักษร[s[i]] + 1
- ถ้า s[i] เป็นตัวอักษร แล้ว
- คืน -1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
from collections import defaultdict class Solution: def solve(self, s): chars = defaultdict(int) for i in range(len(s)): if s[i] in chars: return i else: chars[s[i]] += 1 return -1 ob = Solution() print(ob.solve("abcade"))
อินพุต
"abcade"
ผลลัพธ์
3