สมมติว่าเรามีสตริง alphanumeric s ที่มีตัวอักษรพิมพ์เล็กในตำแหน่งคู่ และตัวเลขในตำแหน่งคี่ 定義 operation shift(c, x) โดย c คือตัวอักษร x คือตัวเลข จะหาตัวอักษรที่อยู่หลัง c ไป x ตัว เช่น shift('p', 5) = 'u', shift('a', 0) = 'a' สำหรับทุก index คี่ i เราต้องแทนที่ s[i] ด้วย shift(s[i-1], s[i]) คืนสตริงหลังแทนที่ทั้งหมด
เช่น s = "a2b1d4f3h2" ผลลัพธ์คือ "acbcdhfihj" เพราะ shift('a',2)='c', shift('b',1)='c', shift('d',4)='h', shift('f',3)='i', shift('h',2)='j'
ขั้นตอนการแก้ปัญหา
- res = ""
- วนลูป i จาก 0 ถึง len(s)-1:
- ถ้า s[i] เป็นตัวเลข: res += chr(int(s[i]) + ord(s[i-1]))
- มิฉะนั้น: res += s[i]
- คืนค่า res
ตัวอย่างโค้ด
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))
ข้อมูลเข้า
"a2b1d4f3h2"
ข้อมูลออก
acbcdhfihj