Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra ánh xạ 1-1 giữa hai chuỗi trong Python


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 i từ 0 đến min(len(s), len(t))-1:
    • Nếu s[i] đã có trong s_dict và s_dict[s[i]] != t[i], trả về False.
    • Ngược lại nếu t[i] đã có trong t_dict và 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].
  • 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