Cho một chuỗi s, hãy tìm độ dài của chuỗi dài nhất chuỗi con không có ký tự trùng lặp.
Example:
Input: s = "abcabcbb"
Output: 3
Constraints:
0 <= s.length <= 5 * 10^6
s bao gồm các chữ...
1
Trả lời câu hỏi của Lamourahlabontes
Câu trả lời phải chính xác, đầy đủ dựa trên kiến thức xác thực:
✔ Đối với câu hỏi trắc nghiệm: Đưa đáp án lựa chọn + giải thích lý do chọn đáp án.
✔ Đối với câu hỏi tự luận: Đưa lời giải và đáp án cho câu hỏi.
✔ Đối với câu hỏi trả lời ngắn: Đưa ra đáp án + giải thích lý do.
✔ Chấp nhận sử dụng ảnh do thành viên viết tay, ảnh cần rõ nét, không bị mờ, vỡ ảnh.
Sử dụng ngôn ngữ rõ ràng, dễ hiểu.
Tránh đưa ra các ý kiến cá nhân mang tính chất chủ quan.
Nếu sử dụng thông tin từ nguồn khác, phải trích dẫn nguồn đầy đủ và chính xác.
Tuyệt đối không được sao chép các thông tin từ các trang khác, từ AI hoặc chatGPT.
Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để tìm độ dài của chuỗi con dài nhất không có ký tự trùng lặp trong chuỗi s, ta có thể sử dụng thuật toán "Sliding Window" (cửa sổ trượt) với độ phức tạp O(n), trong đó n là độ dài chuỗi s.
Ý tưởng:
- Dùng hai con trỏ (hoặc chỉ số) để tạo thành một cửa sổ trượt trên chuỗi.
- Mở rộng cửa sổ bằng cách di chuyển con trỏ bên phải, đồng thời kiểm tra xem ký tự mới có bị trùng trong cửa sổ hiện tại không.
- Nếu có ký tự trùng, di chuyển con trỏ bên trái để loại bỏ ký tự trùng đó.
- Cập nhật độ dài chuỗi con không trùng lớn nhất trong quá trình duyệt.
Dưới đây là ví dụ code bằng Python minh họa:
```python
def lengthOfLongestSubstring(s: str) -> int:
char_index = {}
left = 0
max_length = 0
for right in range(len(s)):
if s[right] in char_index and char_index[s[right]] >= left:
left = char_index[s[right]] + 1
char_index[s[right]] = right
max_length = max(max_length, right - left + 1)
return max_length
# Ví dụ test
s = "abcabcbb"
print(lengthOfLongestSubstring(s)) # Output: 3
```
Bạn có thể áp dụng thuật toán này cho chuỗi có độ dài lên đến 5 triệu ký tự vì nó chạy trong thời gian tuyến tính O(n). Nếu bạn cần, tôi có thể giúp bạn viết code bằng ngôn ngữ khác hoặc giải thích chi tiết hơn.
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5(0 đánh giá)
0
0 bình luận
Bình luận
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019
Email: info@fqa.vn
Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Ô Chợ Dừa, Quận Đống Đa, Thành phố Hà Nội, Việt Nam.