Shifting letters

December 20, 2022

array-and-hashmap

Problem URL: Shifting letters

We will calculate the total shift and then shift each character by the total shift. We will keep track of the total shift by subtracting the shift from the total shift. We will use a helper function to shift the character by the shift.

class Solution:
    def shiftingLetters(self, s: str, shifts: List[int]) -> str:
        totalShift = sum(shifts)
        res = []
        for i, ch in enumerate(s):
            res.append(self.shift(ch, totalShift))
            totalShift -= shifts[i]
        return ''.join(res)

    def shift(self, ch: str, shift: int) -> str:
        return chr((ord(ch) - ord('a') + shift) % 26 + ord('a'))

Time complexity: O(n)
Space complexity: O(1)