สมมติว่าเรามีข้อความสตริงตัวอักษรพิมพ์เล็กและมีสตริงอื่นที่เรียกว่าคีย์ เราต้องหาสตริงใหม่ที่ทุกตัวอักษรใน text[i] ถูกย้ายไปทางด้านขวาด้วย offset key[i] นี่คือออฟเซ็ตที่แสดงโดยตำแหน่งของคีย์[i]ในตัวอักษร (A=0, B=1 เป็นต้น) หากตัวอักษรล้น จะถูกห่อรอบอีกด้านหนึ่ง
ดังนั้น หากอินพุตเป็น text ="code", key ="team" ผลลัพธ์จะเป็น "vsdq"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- cip :=รายการใหม่
- start :=ASCII ของ 'a'
- สำหรับแต่ละ l จากข้อความและ k จากคีย์ ทำ
- shift :=(ASCII ของ k) - เริ่ม
- pos :=start +((ASCII of l) - start + shift) mod 26
- ใส่อักขระของ pos ที่ส่วนท้ายของ cip
- รวมสตริงของ cip และส่งคืน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, text, key): cip = [] start = ord('a') for l, k in zip(text, key): shift = ord(k) - start pos = start + (ord(l) - start + shift) % 26 cip.append(chr(pos)) return ''.join([l for l in cip]) ob = Solution() text = "code" key = "team" print(ob.solve(text, key))
อินพุต
"code", "team"
ผลลัพธ์
vsdq