Kiểm tra chuỗi đối xứng lọc ký tự
Trong hệ thống NLP phân tích văn bản của AI Empire Academy, cần kiểm tra xem một cụm từ hoặc mã định danh có phải là chuỗi đối xứng (Palindrome) hay không.
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: string methods, two pointers basics.
Nội dung đề bài
Mục tiêu kiến thức
- Rèn luyện kỹ thuật Hai con trỏ (Two Pointers) co cụm từ hai đầu chuỗi.
- Sử dụng phương thức kiểm tra ký tự chữ và số
str.isalnum()và chuyển chữ thườngstr.lower(). - Tối ưu hóa bộ nhớ bổ trợ đạt O(1) mà không cần tạo thêm chuỗi đảo ngược mới.
Mô tả bài toán
Trong hệ thống NLP phân tích văn bản của AI Empire Academy, cần kiểm tra xem một cụm từ hoặc mã định danh có phải là chuỗi đối xứng (Palindrome) hay không.
Một chuỗi được coi là đối xứng nếu sau khi:
- Chuyển toàn bộ các chữ cái hoa thành chữ thường.
- Bỏ qua tất cả các ký tự không phải là chữ cái hoặc chữ số (dấu cách, dấu câu, ký tự đặc biệt như
!,@,#,,,.).
Thì chuỗi đó đọc từ trái sang phải giống hệt như đọc từ phải sang trái. Chuỗi rỗng hoặc chuỗi chỉ chứa ký tự đặc biệt được coi là đối xứng hợp lệ.
Hãy viết hàm is_valid_palindrome(s: str) -> bool trả về True nếu chuỗi là đối xứng theo quy tắc trên, ngược lại trả về False.
Input
Một chuỗi ký tự s (str).
Output
Trả về giá trị boolean True hoặc False.
Ràng buộc
- Độ dài chuỗi s: 0 ≤ |s| ≤ 2 · 105.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`s = "A man, a plan, a canal: Panama"`Output
`True`Giải thích
Sau khi lọc ký tự đặc biệt và chuyển chữ thường, chuỗi trở thành "amanaplanacanalpanama" — đây là một chuỗi đối xứng.
Ví dụ 2
Input
`s = "race a car"`Output
`False`Giải thích
Chuỗi lọc được là "raceacar", đọc ngược là "racaecar" ⇒ không đối xứng.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
