Giả sử chúng ta có hai chuỗi chữ thường s, và t chúng ta phải kiểm tra xem liệu chúng ta có thể tạo một ánh xạ 1-1 cho mỗi chữ cái trong s với một chữ cái khác (có thể là cùng một chữ cái) sao cho s có thể được ánh xạ thành t hay không. (Thứ tự các ký tự sẽ không được thay đổi).
Vì vậy, nếu đầu vào là s ="papa", t ="lili", thì đầu ra sẽ là True, vì chúng ta có thể tạo ánh xạ này:"p" thành "l", "a" -> "i"
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- s_dict:=một bản đồ mới
- t_dict:=một bản đồ mới
- đối với tôi trong phạm vi từ 0 đến tối thiểu kích thước s và kích thước t, hãy thực hiện
- nếu s [i] có trong s_dict thì
- nếu s_dict [s [i]] không giống với t [i], thì
- trả về Sai
- nếu s_dict [s [i]] không giống với t [i], thì
- ngược lại khi t [i] có trong t_dict thì
- nếu t_dict [t [i]] không giống với s [i], thì
- trả về Sai
- nếu t_dict [t [i]] không giống với s [i], thì
- nếu không,
- s_dict [s [i]]:=t [i]
- t_dict [t [i]]:=s [i]
- nếu s [i] có trong s_dict thì
- trả về True
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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