3337. Total Characters in String After Transformations II
3337. Total Characters in String After Transformations II
Description
You are given a string s consisting of lowercase English letters, an integer t representing the number of transformations to perform, and an array nums of size 26. In one transformation , every character in s is replaced according to the following rules:
- Replace
s[i]with the nextnums[s[i] - 'a']consecutive characters in the alphabet. For example, ifs[i] = 'a'andnums[0] = 3, the character'a'transforms into the next 3 consecutive characters ahead of it, which results in"bcd". - The transformation wraps around the alphabet if it exceeds
'z'. For example, ifs[i] = 'y'andnums[24] = 3, the character'y'transforms into the next 3 consecutive characters ahead of it, which results in"zab".
Return the length of the resulting string after exactly t transformations.
Since the answer may be very large, return it modulo 10^9 + 7.
Example 1:
1 | Input: s = "abcyy", t = 2, nums = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2] |
Explanation:
First Transformation (t = 1):
'a'becomes'b'asnums[0] == 1'b'becomes'c'asnums[1] == 1'c'becomes'd'asnums[2] == 1'y'becomes'z'asnums[24] == 1'y'becomes'z'asnums[24] == 1- String after the first transformation:
"bcdzz"
Second Transformation (t = 2):
'b'becomes'c'asnums[1] == 1'c'becomes'd'asnums[2] == 1'd'becomes'e'asnums[3] == 1'z'becomes'ab'asnums[25] == 2'z'becomes'ab'asnums[25] == 2- String after the second transformation:
"cdeabab"
Final Length of the string: The string is
"cdeabab", which has 7 characters.
Example 2:
1 | Input: s = "azbk", t = 1, nums = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2] |
Explanation:
First Transformation (t = 1):
'a'becomes'bc'asnums[0] == 2'z'becomes'ab'asnums[25] == 2'b'becomes'cd'asnums[1] == 2'k'becomes'lm'asnums[10] == 2- String after the first transformation:
"bcabcdlm"
Final Length of the string: The string is
"bcabcdlm", which has 8 characters.
Constraints:
1 <= s.length <= 10^5sconsists only of lowercase English letters.1 <= t <= 10^9nums.length == 261 <= nums[i] <= 25
Hints/Notes
- 2024/11/06
- matrix calculation
- matrix fast pow
- 0x3Fâs solution(checked)
- Weekly Contest 421
Solution
Language: C++
1 | class Solution { |