สมมติว่าเรามีสตริงตัวอักษรพิมพ์เล็ก s และตัวเลขออฟเซ็ตบอกว่า k เราต้องแทนที่ตัวอักษรทุกตัวใน s ด้วยตำแหน่งตัวอักษร k ต่อไปตามตัวอักษร เราต้องจำไว้ว่าเมื่อตัวอักษรล้นผ่าน a หรือ z จดหมายจะพันรอบอีกด้านหนึ่ง
ดังนั้น หากอินพุตเป็นแบบ "hello" ให้ k =3 เอาต์พุตจะเป็น "khoor"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน shift() นี่จะใช้เวลาค
-
ผม :=ASCII ของ (c) - ASCII ของ ('a')
-
ผม :=ผม + k
-
ฉัน :=ฉัน mod 26
-
ส่งคืนอักขระจาก ASCII (ASCII ของ ('a') + i)
-
จากวิธีหลัก ให้ทำดังนี้ −
-
ret :=สำหรับแต่ละอักขระ c ใน s สร้างรายการองค์ประกอบโดยเรียก shift(c)
-
รีเทิร์น
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution:
def solve(self, s, k):
def shift(c):
i = ord(c) - ord('a')
i += k
i %= 26
return chr(ord('a') + i)
return "".join(map(shift, s))
ob = Solution()
print(ob.solve("hello", 3)) อินพุต
"hello", 3
ผลลัพธ์
khoor