ปัญหา
กำหนดสตริง s และ t ตรวจสอบว่าสำหรับทุกตัวอักษรใน s ความถี่ใน s เป็นตัวคูณหรือตัวหารของความถี่ใน t (เฉพาะตัวอักษรที่มีในทั้งคู่)
ตัวอย่าง: s="xxyzzw", t="yyyxxxxzz" → x:2 vs 4 (2|4), y:1 vs 3 (1|3), z:2 vs 2, w:1 vs 0 (ข้าม) → True
แนวทางแก้ปัญหา
- นับความถี่ใน
sและt(s_freq,t_freq) - ลูปตัวอักษรใน
s_freqถ้ามีในt_freqตรวจสอบหารลงตัว (mod == 0)
ตัวอย่างโค้ด
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
else:
return False
return True
s = "xxyzzw"
t = "yyyxxxxzz"
print(solve(s, t)) # Trueอินพุต / เอาต์พุต
Input: "xxyzzw", "yyyxxxxzz" Output: True