Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra xem một chuỗi có thể được ánh xạ 1-1 thành một chuỗi khác bằng Python hay không

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
    • 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 không,
      • s_dict [s [i]]:=t [i]
      • t_dict [t [i]]:=s [i]
  • 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