Cho 2 chuỗi s, t. Đếm số cách chọn chuỗi con không rỗng của s, thay đổi đúng 1 ký tự, thành chuỗi con của t.
Ví dụ: s="sts", t="tsts" → 6.
Giải thuật (Duyệt tất cả cặp vị trí bắt đầu)
- Với mỗi cặp
(i1, i2)vị trí bắt đầu trongs,t:- Mở rộng
i,jcho bằng nhau. - Khi gặp ký tự khác: bỏ qua 1 ký tự (giả lập thay đổi), tăng
ans, tiếp tục mở rộng phần còn lại, mỗi bước tăngans.
- Mở rộng
Ví dụ minh họa
def solve(s, t):
n1, n2 = len(s), len(t)
ans = 0
for i1, c1 in enumerate(s):
for i2, c2 in enumerate(t):
i, j = i1, i2
while i < n1 and j < n2 and s[i] == t[j]:
i += 1
j += 1
if i < n1 and j < n2 and s[i] != t[j]:
i += 1
j += 1
ans += 1
while i < n1 and j < n2 and s[i] == t[j]:
i += 1
j += 1
ans += 1
return ans
s = "sts"
t = "tsts"
print(solve(s, t))
Đầu vào
"sts", "tsts"
Đầu ra
6