Cho hai chuỗi s và t. Kiểm tra xem có thể sắp xếp lại (hoán vị) các ký tự của s để được t hay không.
Ví dụ: s = "worldlloeh", t = "helloworld" → True.
Giải thuật
- Nếu độ dài khác nhau →
False. - Đếm tần suất ký tự trong
s. - Duyệt
t, giảm tần suất. Nếu tần suất âm →False. - Cuối cùng trả về
True.
Mã ví dụ
from collections import defaultdict
def solve(s, t):
s_len = len(s)
t_len = len(t)
if s_len != t_len:
return False
freq = defaultdict(int)
for char in s:
freq[char] += 1
for i in range(t_len):
freq[t[i]] -= 1
if freq[t[i]] < 0:
return False
return True
s = "worldlloeh"
t = "helloworld"
print(solve(s, t))
Đầu vào
"worldlloeh", "helloworld"
Đầu ra
True