Biến đổi chuỗi kí tự thường

Cho hai chuỗi rs là tham số hình thức của hàm is_transformable. Với phép biến đổi biến tất cả kí tự 1, như 'a thành kí tự 2, như 'b', trả về true nếu có thể biến đổi từ r thành s, và false nếu ngược lại.

Ví dụ:

  1. r = “xmms”, s = “http” => true
    xmmp, xttp, http
  2. r = “mood”, s = “doom” => true
    mood, hood, hoom, doom
  3. r = “cddc”, s = “aabb” => false

Giới hạn:
0 < |r| = |s| < 10000
Các chuỗi hợp lệ chỉ được có những kí tự thường, hay [a-z]+

1 Like

E nghĩ sao làm v. :kissing:

def is_transformable(r, s):
    l, d, i = len(r), {}, 0

    for c in r:
        if c not in d:
            d[c] = i
            i += 1
    tmp = list(map(lambda c: d[c], r))

    d2, i = {}, 0
    for k in range(l):
        if s[k] not in d2:
            if i != tmp[k]: return False
            d2[s[k]] = i
            i += 1
        elif d2[s[k]] != tmp[k]: return False
    return True

print(is_transformable('aaabbaaccabacd', 'eeebbeeuuebeug'))
print(is_transformable('aaabbaaccabacd', 'eeebbbeuuebeug'))
True
False
1 Like
aaabbxeccabacd -> eeebbbeuuebeug = true
abcdefghijklmno -> vvvwwwxxxyyyzzz = true

:thinking:

Case dưới false mà Situ ca. :v

1 Like
> print is_transformable("abcdefghijklmnopqrstuvwxyz","bcdefghijklmnopqrstuvwxyza")
True

False do các biến đổi đều làm mất ít nhất 1 loại kí tự.

> print(is_transformable("faq","ama"))
False

True: faq -> qaq -> qmq -> ama

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?