Cho chuỗi alphanumeric s: ký tự thường ở vị trí chẵn, chữ số ở vị trí lẻ. Phép shift(c, x): trả về ký tự cách c x vị trí trong bảng chữ cái (shift('p',5)='u', shift('a',0)='a'). Với mỗi chỉ số lẻ i, thay s[i] bằng shift(s[i-1], s[i]). Trả về chuỗi sau thay thế.
Ví dụ: s = "a2b1d4f3h2" → "acbcdhfihj" vì: shift('a',2)='c', shift('b',1)='c', shift('d',4)='h', shift('f',3)='i', shift('h',2)='j'.
Thuật toán giải quyết
- res := chuỗi rỗng.
- Duyệt i từ 0 đến len(s)-1:
- Nếu s[i] là chữ số: res += chr(ord(s[i-1]) + int(s[i])).
- Ngược lại: res += s[i].
- Trả về res.
Ví dụ triển khai
def solve(s):
res = ""
for i in range(len(s)):
if s[i].isdigit():
res += chr(int(s[i]) + ord(s[i-1]))
else:
res += s[i]
return res
s = "a2b1d4f3h2"
print(solve(s))Đầu vào
"a2b1d4f3h2"
Đầu ra
acbcdhfihj