Chuỗi Con Không Lặp Ký Tự (Kinh điển - LongestUniqueStr)
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Cho một chuỗi ký tự S chỉ gồm các chữ cái tiếng Anh thường và hoa, chữ số và ký tự đặc biệt. Hãy tìm độ dài của chuỗi con liên tiếp dài nhất mà trong đó không có ký tự nào bị lặp lại.
Input:
• Một dòng duy nhất chứa chuỗi S (độ dài 1 ≤ len(S) ≤ 10^5).
Output:
• In ra một số nguyên là độ dài lớn nhất tìm được.
Gợi ý thuật toán: Sử dụng kỹ thuật Hai con trở (Two Pointers) hoặc Cửa sổ trượt co giãn.
• Dùng 2 biến (L (trái) và R (phải).
• Di chuyển R sang phải. Dùng một mảng đếm (hoặc Map) để kiểm tra ký tự S[R] đã xuất hiện trong đoạn [L, R] chưa.
• Nếu đã xuất hiện, tăng L lên để loại bỏ ký tự trùng lặp đó.
• Cập nhật độ dài max ans = max(ans, R - L + 1).
Ví dụ:
Test 1:
Input:
abcabcbb
Output:
3
Test 2:
Input:
pwwkew
Output:
3
Bình luận