Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra tần suất ký tự chuỗi này là ước/bội của chuỗi kia trong Python

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] == 0 hoặ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