Skip to content

Latest commit

 

History

History
38 lines (32 loc) · 1.02 KB

File metadata and controls

38 lines (32 loc) · 1.02 KB

LeetCode Records - Question 3106 Lexicographically Smallest String After Operations With Constraint

Attempt 1: Calculate two differences to the character a for each character

class Solution {
    public String getSmallestString(String s, int k) {
        char[] arr = s.toCharArray();

        int i = 0;
        while (k > 0 && i < arr.length) {
            int diff1 = arr[i] - 'a';
            int diff2 = 26 - diff1;

            if (diff2 > k) {
                int diff = Math.min(diff1, k);
                arr[i] = (char)(arr[i] - diff);
                k -= diff;
            } else {
                if (diff1 <= diff2) {
                    arr[i] = (char)(arr[i] - diff1);
                    k -= diff1;
                } else {
                    arr[i] = (char)(arr[i] + diff2 - 26);
                    k -= diff2;
                }
            }

            i++;
        }

        return new String(arr);
    }
}
  • Runtime: 1 ms (Beats: 100.00%)
  • Memory: 42.09 MB (Beats: 99.27%)