# # 【LeetCode】848. Shifting Letters 解题报告（Python）

## # 题目描述：

We have a string S of lowercase letters, and an integer array shifts.

Call the `shift` of a letter, the next letter in the alphabet, (wrapping around so that 'z' becomes 'a').

For example, shift('a') = 'b', shift('t') = 'u', and shift('z') = 'a'.

Now for each shifts[i] = x, we want to shift the first i+1 letters of S, x times.

Return the final string after all such shifts to S are applied.

Example 1:

``````Input: S = "abc", shifts = [3,5,9]
Output: "rpl"
Explanation:
After shifting the first 1 letters of S by 3, we have "dbc".
After shifting the first 2 letters of S by 5, we have "igc".
After shifting the first 3 letters of S by 9, we have "rpl", the answer.
``````

Note:

1. 1 <= S.length = shifts.length <= 20000
2. 0 <= shifts[i] <= 10 ^ 9

## # 题目大意

（这个题本身简单，但是读懂题目很重要）

## # 解题方法

（应该没有人傻到真的去循环，而不是用求余操作吧233，逃……）

``````class Solution(object):
def shiftingLetters(self, S, shifts):
"""
:type S: str
:type shifts: List[int]
:rtype: str
"""
_len = len(S)
shifts_sum = sum(shifts)
shifts_real = []
for shift in shifts:
shifts_real.append(shifts_sum)
shifts_sum -= shift
def shift_map(string, shift_time):
shifted = ord(s) + (shift_time % 26)
return chr(shifted if shifted <= ord('z') else shifted - 26)
ans = ''
for i, s in enumerate(S):
ans += shift_map(s, shifts_real[i])
return ans
``````

## # 日期

2018 年 6 月 10 日 ———— 等了两天的腾讯比赛复赛B的数据集，结果人家在复赛刚开始就给了。。