Skip to content

Latest commit

 

History

History
41 lines (35 loc) · 1.09 KB

Question_2381.md

File metadata and controls

41 lines (35 loc) · 1.09 KB

LeetCode Records - Question 2381 Shifting Letters II

Attempt 1: Use an int[] to store the prefix sums

class Solution {
    public String shiftingLetters(String s, int[][] shifts) {
        char[] arr = s.toCharArray();
        int[] prefixSums = new int[arr.length];

        for (int[] shift : shifts) {
            int start = shift[0];
            int end = shift[1] + 1;
            int direction = shift[2];

            if (direction == 1) {
                prefixSums[start]++;
                if (end < arr.length) {
                    prefixSums[end]--;
                }
            } else {
                prefixSums[start]--;
                if (end < arr.length) {
                    prefixSums[end]++;
                }
            }
        }

        int prefixSum = 0;
        for (int i = 0; i < arr.length; i++) {
            prefixSum += prefixSums[i];
            arr[i] = (char)((arr[i] - 'a' + prefixSum % 26 + 26) % 26 + 'a');
        }

        return new String(arr);
    }
}
  • Runtime: 6 ms (Beats: 95.65%)
  • Memory: 74.00 MB (Beats: 91.29%)