Bài toán: Cho hai chuỗi s, t. Tìm ký tự xuất hiện nhiều nhất trong s, kiểm tra xem nó xuất hiện trong t đúng bằng số lần đó hay không.
Triển khai Python
from collections import defaultdict
def solve(s, t):
freq = defaultdict(int)
for ch in s:
freq[ch] += 1
max_char = max(freq, key=freq.get)
max_freq = freq[max_char]
return t.count(max_char) == max_freq
# Test
print(solve("crosssection", "securesystem")) # True: 's' xuất hiện 4 lần trong cả hai
print(solve("hello", "world")) # False: 'l' 2 lần trong s, 1 lần trong t
print(solve("aaa", "aa")) # False: 'a' 3 vs 2
Kết quả
True
Giải thích
- Dùng
defaultdict(int)đếm tần suất ký tự trongs. max(freq, key=freq.get)tìm key có value lớn nhất.- So sánh với
t.count(max_char). - Nếu nhiều ký tự cùng tần suất max,
max()trả về ký tự đầu tiên theo thứ tự duyệt (Python 3.7+ giữ thứ tự insertion). - Độ phức tạp: O(|s| + |t|).