ภาพรวม
Caesar Cipher เป็นรหัสลับแบบเลื่อนตัวอักษร (shift cipher) เลื่อนแต่ละตัวอักษร k ตำแหน่งในอัลฟาเบท วนรอบ (wrap around) เมื่อเกิน z
ตัวอย่าง
อินพุต: "hello", k = 3
h→k, e→h, l→o, l→o, o→r → "khoor"
โค้ด Python
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))
อธิบาย
ord(c) - ord('a'): แปลงตัวอักษรเป็น 0-25i += k: เลื่อน k ตำแหน่งi %= 26: wrap around (modulo 26)chr(ord('a') + i): แปลงกลับเป็นตัวอักษร
ขยาย: รองรับตัวใหญ่-เล็ก และ non-alphabet
def caesar_cipher(text, k):
result = []
for c in text:
if c.islower():
result.append(chr((ord(c) - ord('a') + k) % 26 + ord('a')))
elif c.isupper():
result.append(chr((ord(c) - ord('A') + k) % 26 + ord('A')))
else:
result.append(c)
return "".join(result)
ผลลัพธ์
khoor