Caesar Cipher in Python


Suppose we have a lowercase alphabet string s, and an offset number say k. We have to replace every letter in s with a letter k positions further along the alphabet. We have to keep in mind that when the letter overflows past a or z, it gets wrapped around the other side.

So, if the input is like "hello", k = 3, then the output will be "khoor"

To solve this, we will follow these steps −

  • Define a function shift(). This will take c

  • i := ASCII of (c) - ASCII of ('a')

  • i := i + k

  • i := i mod 26

  • return character from ASCII (ASCII of ('a') + i)

  • From the main method, do the following −

  • ret := for each character c in s, make a list of elements by calling shift(c)

  • return ret

Let us see the following implementation to get better understanding −

Example

 Live Demo

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))

Input

"hello", 3

Output

khoor

Updated on: 02-Sep-2020

981 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements