3629 Total Characters In String After Transformations I
3629 Total Characters In String After Transformations I
Total Characters in String After Transformations I 
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:
1
2
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
**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:
1
2
3
4
5
6
7
8
9
**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
2
3
1 <= s.length <= 105
s consists only of lowercase English letters.
1 <= t <= 105
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
def lengthAfterTransformations(self, s: str, t: int) -> int:
mod = 10**9 + 7
cnt = [0] * 26
for ch in s:
cnt[ord(ch) - ord("a")] += 1
for round in range(t):
nxt = [0] * 26
nxt[0] = cnt[25]
nxt[1] = (cnt[25] + cnt[0]) % mod
for i in range(2, 26):
nxt[i] = cnt[i - 1]
cnt = nxt
ans = sum(cnt) % mod
return ans
This post is licensed under CC BY 4.0 by the author.