3335. Total Characters in String After Transformations I
Description
You are given a string s
and an integer t
, representing the number of transformations to perform. In one transformation, every character in s
is replaced according to the following rules:
- If the character is
'z'
, replace it with the string"ab"
. - Otherwise, replace it with the next character in the alphabet. For example,
'a'
is replaced with'b'
,'b'
is replaced with'c'
, and so on.
Return the length of the resulting string after exactly t
transformations.
Since the answer may be very large, return it modulo 109 + 7
.
Example 1:
Input: s = "abcyy", t = 2
Output: 7
Explanation:
- First Transformation (t = 1):
'a'
becomes'b'
'b'
becomes'c'
'c'
becomes'd'
'y'
becomes'z'
'y'
becomes'z'
- String after the first transformation:
"bcdzz"
- Second Transformation (t = 2):
'b'
becomes'c'
'c'
becomes'd'
'd'
becomes'e'
'z'
becomes"ab"
'z'
becomes"ab"
- String after the second transformation:
"cdeabab"
- Final Length of the string: The string is
"cdeabab"
, which has 7 characters.
Example 2:
Input: s = "azbk", t = 1
Output: 5
Explanation:
- First Transformation (t = 1):
'a'
becomes'b'
'z'
becomes"ab"
'b'
becomes'c'
'k'
becomes'l'
- String after the first transformation:
"babcl"
- Final Length of the string: The string is
"babcl"
, which has 5 characters.
Constraints:
1 <= s.length <= 105
s
consists only of lowercase English letters.1 <= t <= 105
Solutions
Solution 1: Recurrence
We define \(f[i][j]\) to represent the count of the \(j\)-th letter in the alphabet after \(i\) transformations. Initially, \(f[0][j]\) is the count of the \(j\)-th letter in the string \(s\).
After each transformation, the count of the \(j\)-th letter in the alphabet can be calculated as follows:
The answer is \(f[t][0] + f[t][1] + \ldots + f[t][25]\).
Since the answer can be very large, we take the result modulo \(10^9 + 7\).
The time complexity is \(O(t \times |\Sigma|)\), and the space complexity is \(O(t \times |\Sigma|)\), where \(|\Sigma|\) is the size of the alphabet.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|