btvn.vn
Tìm kiếm Đăng nhập

Kiểm tra xâu đối xứng bằng các cặp ở hai đầu

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Làm mịn từ “đọc ngược vẫn như cũ”

Xâu đối xứng giữ nguyên khi đảo thứ tự kí tự. Thay vì đảo cả xâu, so các cặp tương ứng từ hai đầu: vị trí `i` ở trái và `len(s)-1-i` ở phải. Nếu một cặp khác nhau, trả `False`; nếu so hết nửa xâu không thấy khác, trả `True`. Với xâu có số kí tự lẻ, kí tự giữa tự khớp với chính nó nên không cần kiểm. Theo bài toán này, **mỗi kí tự được giữ nguyên đúng như đã nhập**: chữ hoa, chữ thường và dấu cách đều được tính.

Chỉ duyệt nửa xâu

```python def doi_xung(s): for i in range(len(s) // 2): if s[i] != s[len(s) - 1 - i]: return False return True print(doi_xung("abccba")) print(doi_xung("abca")) print(doi_xung("")) ``` Kết quả lần lượt là `True`, `False`, `True`. Xâu rỗng không có cặp nào trái nhau, nên được xem là đối xứng. Với `"abca"`, cặp ngoài `a`–`a` khớp nhưng cặp `b`–`c` khác, nên phải tiếp tục đến cặp trong mới kết luận. So trực tiếp các cặp giúp nhận ra bước con cần thiết của thiết kế làm mịn dần.

Bài luyện

Theo hàm trong bài, xâu nào là đối xứng?
Chọn một đáp án

Bài luyện

Trong mã `doi_xung`, kí tự bên phải tương ứng với `s[i]` có chỉ số nào?
Chọn một đáp án

Bài luyện

`doi_xung("")` trả gì?
Chọn một đáp án

Đang học