• + 0 comments
    with O(n) def binarySearch(arr, key):
        low = 0
        high = len(arr) - 1
        
        while low <= high:
            mid = (low + high) // 2
            if arr[mid] == key:
                return mid 
            elif arr[mid] < key:
                low = mid + 1  
            else:
                high = mid - 1
    def caesarCipher(s, k):
        k=k%26
        abc1='abcdefghijklmnopqrstuvwxyz'
        abc=abc1[k:]+abc1[:k]
        s_new=''
        for i in range(n):
            if s[i].islower():
               index=binarySearch(abc1,s[i])
               s_new+=abc[index]
            elif s[i].isupper():
               index=binarySearch(abc1,s[i].swapcase())
               s_new+=abc[index].swapcase()
            else:
               s_new+=s[i]
        return s_new