Cho hai chuỗi s, t. Kiểm tra với mỗi ký tự xuất hiện trong s, tần suất của nó trong s là ước hoặc bội của tần suất trong t.
Ví dụ: s="xxyzzw", t="yyyxxxxzz" → x:2 vs 4 (bội), y:1 vs 3 (bội), z:2 vs 2 (bằng), w:1 vs 0 (bỏ qua) → True.
Thuật toán
- Đếm tần suất
s_freq,t_freq. - Duyệt ký tự trong
s_freq: - Nếu ký tự không có trong
t→ bỏ qua. - Nếu
t_freq[ch] % s_freq[ch] == 0hoặc ngược lại → tiếp tục. - Ngược lại →
False.
Triển khai
from collections import defaultdict
def solve(s, t):
s_freq = defaultdict(int)
t_freq = defaultdict(int)
for ch in s:
s_freq[ch] += 1
for ch in t:
t_freq[ch] += 1
for ch in s_freq:
if ch not in t_freq:
continue
if t_freq[ch] % s_freq[ch] == 0 or s_freq[ch] % t_freq[ch] == 0:
continue
return False
return True
s = "xxyzzw"
t = "yyyxxxxzz"
print(solve(s, t)) # True
Đầu vào / Đầu ra
Input: "xxyzzw", "yyyxxxxzz"
Output: True