สมมติว่าเรามีสตริงตัวอักษรพิมพ์เล็ก 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