有一个由小写字母组成的字符串S
,和一个整数数组shifts
。
我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的,z
将会变成a
)。
例如,shift('a') = 'b'
,shift('t') = 'u'
,以及shift('z') = 'a'
。
对于每个shifts[i] = x
, 我们会将S
中的前i+1
个字母移位x
次。
返回将所有这些移位都应用到S
后最终得到的字符串。
这是字符的循环移位问题,根据shifts
数组就可以计算出每个字符的移位数量,第i
个字母共移位shifts[i] + shifts[i+1] + ... + shifts[shifts.length - 1]
次,虽然可以直接是用数组计算出每个字符应该位移的长度,但是如果直接从数组尾部向前遍历,那么直接记录之前的累加值然后作循环移位即可,首先定义一个累加值计数和sub
,Js
中没有char
基本数据类型,所以对于字符操作需要通过Ascii
码计算,定义base
作为字符a
的Ascii
码值,target
为将要返回的目标字符串,然后从后向前遍历数组,累加sub
计数器,计算当前字符加入计数器的长度减掉a
字符来计算Ascii
码值,然后取余获得对于a
字符的偏移长度,然后将Ascii
码值转换为字符拼接到目标字符串即可。