Cho hai chuỗi chữ thường s và t cùng độ dài. Có thể chọn một ký tự từ s và một từ t hoán đổi cho nhau, lặp lại bao nhiêu lần tùy ý. Kiểm tra có thể làm cho hai chuỗi giống nhau không.
Ví dụ: s="abcd", t="cdab" → True.
Giải thuật (Đếm tần suất ký tự)
- Đếm tần suất ký tự trong chuỗi nối
s + t - Nếu mọi ký tự xuất hiện chẵn lần → có thể hoán đổi để bằng nhau (
True) - Nếu có ký tự xuất hiện lẻ lần → không thể (
False)
Lý do: hoán đổi giữa s và t bảo toàn tổng số lượng mỗi ký tự. Để s=t, mỗi ký tự phải xuất hiện chẵn lần trong tổng.
Ví dụ triển khai
from collections import Counter
def solve(s, t):
fre = Counter(s + t)
for cnt in fre.values():
if cnt % 2:
return False
return True
print(solve("abcd", "cdab"))
Đầu vào
"abcd", "cdab"
Đầu ra
True