Pangram là câu chứa tất cả 26 chữ cái tiếng Anh ít nhất 1 lần. Không phân biệt hoa/thường. Không yêu cầu "perfect pangram" (mỗi chữ cái đúng 1 lần).
Thuật toán
- Chuyển chuỗi thành chữ thường (hoặc hoa).
- Tạo set từ chuỗi → tự động loại trùng và non-alphabet.
- Lọc chỉ giữ chữ cái
a-z. - Kiểm tra độ dài set == 26.
Ví dụ
def check_pangram(text):
# 1. Lowercase
text = text.lower()
# 2. Set ký tự
chars = set(text)
# 3. Lọc chỉ a-z
alphabet = {ch for ch in chars if 'a' <= ch <= 'z'}
# 4. Kiểm tra
return len(alphabet) == 26
# Test
tests = [
"The quick brown fox jumps over the lazy dog", # Classic pangram
"This is not a pangram",
"Pack my box with five dozen liquor jugs", # Another pangram
]
for t in tests:
result = "LÀ" if check_pangram(t) else "KHÔNG LÀ"
print(f"'{t}' -> {result} pangram")
Kết quả
'The quick brown fox jumps over the lazy dog' -> LÀ pangram 'This is not a pangram' -> KHÔNG LÀ pangram 'Pack my box with five dozen liquor jugs' -> LÀ pangram
Cách viết gọn (One-liner)
is_pangram = lambda s: len({c for c in s.lower() if c.isalpha()}) == 26
# Hoặc dùng set so sánh
import string
is_pangram_v2 = lambda s: set(string.ascii_lowercase).issubset(s.lower())
Kết luận
Dùng set + isalpha() hoặc string.ascii_lowercase là cách pythonic, ngắn gọn, hiệu năng tốt để kiểm tra pangram.