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:
s[i]
with the next nums[s[i] - 'a']
consecutive characters in the alphabet. For example, if s[i] = 'a'
and nums[0] = 3
, the character 'a'
transforms into the next 3 consecutive characters ahead of it, which results in "bcd"
.'z'
. For example, if s[i] = 'y'
and nums[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 109 + 7
.
Example 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]
Output: 7
Explanation:
First Transformation (t = 1):
<ul>
<li><code>'a'</code> becomes <code>'b'</code> as <code>nums[0] == 1</code></li>
<li><code>'b'</code> becomes <code>'c'</code> as <code>nums[1] == 1</code></li>
<li><code>'c'</code> becomes <code>'d'</code> as <code>nums[2] == 1</code></li>
<li><code>'y'</code> becomes <code>'z'</code> as <code>nums[24] == 1</code></li>
<li><code>'y'</code> becomes <code>'z'</code> as <code>nums[24] == 1</code></li>
<li>String after the first transformation: <code>"bcdzz"</code></li>
</ul>
</li>
<li>
<p><strong>Second Transformation (t = 2):</strong></p>
<ul>
<li><code>'b'</code> becomes <code>'c'</code> as <code>nums[1] == 1</code></li>
<li><code>'c'</code> becomes <code>'d'</code> as <code>nums[2] == 1</code></li>
<li><code>'d'</code> becomes <code>'e'</code> as <code>nums[3] == 1</code></li>
<li><code>'z'</code> becomes <code>'ab'</code> as <code>nums[25] == 2</code></li>
<li><code>'z'</code> becomes <code>'ab'</code> as <code>nums[25] == 2</code></li>
<li>String after the second transformation: <code>"cdeabab"</code></li>
</ul>
</li>
<li>
<p><strong>Final Length of the string:</strong> The string is <code>"cdeabab"</code>, which has 7 characters.</p>
</li>
Example 2:
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]
Output: 8
Explanation:
First Transformation (t = 1):
<ul>
<li><code>'a'</code> becomes <code>'bc'</code> as <code>nums[0] == 2</code></li>
<li><code>'z'</code> becomes <code>'ab'</code> as <code>nums[25] == 2</code></li>
<li><code>'b'</code> becomes <code>'cd'</code> as <code>nums[1] == 2</code></li>
<li><code>'k'</code> becomes <code>'lm'</code> as <code>nums[10] == 2</code></li>
<li>String after the first transformation: <code>"bcabcdlm"</code></li>
</ul>
</li>
<li>
<p><strong>Final Length of the string:</strong> The string is <code>"bcabcdlm"</code>, which has 8 characters.</p>
</li>
Constraints:
1 <= s.length <= 105
s
consists only of lowercase English letters.1 <= t <= 109
nums.length == 26
1 <= nums[i] <= 25