Cho một chuỗi s, tìm chỉ mục của ký tự lặp lại đầu tiên. Nếu không có ký tự lặp lại, trả về -1.
Ví dụ
Đầu vào: "abcade".
Đầu ra: 3 vì ký tự 'a' xuất hiện lại tại chỉ mục 3.
Thuật toán
- Tạo một từ điển
charsđể lưu tần suất ký tự. - Duyệt qua từng chỉ mục
icủa chuỗi:- Nếu
s[i]đã có trongchars, trả vềi. - Ngược lại, tăng tần suất của
s[i]trongchars.
- Nếu
- Trả về
-1nếu không tìm thấy.
Mã nguồn Python
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"))
Đầu vào / Đầu ra
Input: "abcade"
Output: 3