Cho hai chuỗi chữ thường s và t, kiểm tra xem có thể tạo ánh xạ 1-1 từ mỗi ký tự trong s sang ký tự trong t (có thể cùng ký tự) sao cho s ánh xạ thành t. Thứ tự ký tự không đổi.
Ví dụ, s = "papa", t = "lili", đầu ra True (p->l, a->i).
Các bước giải quyết:
s_dict,t_dict:= từ điển rỗng.- Duyệt
itừ 0 đến min(len(s), len(t))-1:- Nếu
s[i]đã có trongs_dictvàs_dict[s[i]] != t[i], trả vềFalse. - Ngược lại nếu
t[i]đã có trongt_dictvàt_dict[t[i]] != s[i], trả vềFalse. - Ngược lại, gán
s_dict[s[i]] = t[i],t_dict[t[i]] = s[i].
- Nếu
- Trả về
True.
Ví dụ minh họa
class Solution:
def solve(self, s, t):
s_dict = {}
t_dict = {}
for i in range(min(len(s), len(t))):
if s[i] in s_dict:
if s_dict[s[i]] != t[i]:
return False
elif t[i] in t_dict:
if t_dict[t[i]] != s[i]:
return False
else:
s_dict[s[i]] = t[i]
t_dict[t[i]] = s[i]
return True
ob = Solution()
print(ob.solve("papa", "lili"))
Đầu vào
"papa", "lili"
Đầu ra
True