输入一个字符串 s 和整数数组 shifts,将字母表中的前i位按照数组中的对应值向右移动 i 位置。主要使用两个API,charCodeAt 和 fromCharCode。
- 时间复杂度O(N),空间复杂度O(N)
- Runtime: 96 ms, faster than 67.24%
- Memory Usage: 44.4 MB, less than 96.55%
/**
* @param {string} S
* @param {number[]} shifts
* @return {string}
*/
var shiftingLetters = function(S, shifts) {
if(shifts.length === 0) return S
let len = shifts.length
shifts[len - 1] = shifts[len - 1] % 26
for(let i = len - 2; i >= 0; i--) {
shifts[i] = (shifts[i] + shifts[i + 1]) % 26
}
let l = S.length
let s = S.split('')
for(let i = 0; i < l; i++) {
let index = s[i].charCodeAt() + shifts[i]
if(index > 122) {
index = (index - 97) % 26 + 97
}
s[i] = String.fromCharCode(index)
}
return s.join('')
};
网友评论