两个int相加,可能会超范围。
class Solution {
public:
//'a', 1 -> b='a'+1
// 'a', 26-> b = 'a'+1
//'z', 1->'a' = 'z'+1-26
char shiftfunc(char a, int num){
char ch;
num = num % 26;
if (a+num>'z'){
ch = a+num-26;
}
else{
ch = a+num;
}
return ch;
}
string shiftingLetters(string S, vector<int>& shifts) {
shifts[shifts.size()-1] %= 26;
for(int i=shifts.size()-2;i>=0;i--){
shifts[i] = (shifts[i]%26 + shifts[i+1]%26)%26;
}
for(int i=0;i<S.size();i++){
S[i] = shiftfunc(S[i], shifts[i]);
}
return S;
}
};