สมมติว่ามีสตริง s เราต้องหาดัชนีของตัวอักษรที่ซ้ำแรกในสตริงนั้น หากไม่พบตัวอักษรที่ซ้ำ ให้คืนค่า -1
เช่น ถ้าอินพุตคือ "abcade" ผลลัพธ์จะเป็น 3 เนื่องจาก 'a' ปรากฏอีกครั้งที่ดัชนี 3
ขั้นตอนการแก้ปัญหา
- กำหนด map chars
- สำหรับ i ในช่วง 0 ถึงขนาดของ s ทำ
- ถ้า s[i] อยู่ใน chars แล้ว คืนค่า i
- มิฉะนั้น chars[s[i]] := chars[s[i]] + 1
- คืนค่า -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