字符串操作
leetcode 848. 字母移位
题目:有一个由小写字母组成的字符串 s,和一个长度相同的整数数组 shifts。
我们将字母表中的下一个字母称为原字母的 移位 shift() (由于字母表是环绕的, ‘z’ 将会变成 ‘a’)。
例如,shift(‘a’) = ‘b’, shift(‘t’) = ‘u’, 以及 shift(‘z’) = ‘a’。
对于每个 shifts[i] = x , 我们会将 s 中的前 i + 1 个字母移位 x 次。
返回 将所有这些移位都应用到 s 后最终得到的字符串 。
解答:
class Solution {
public String shiftingLetters(String s, int[] shifts) {
int num = 0; //当前字母移动次数
// 暴力解法
char[] chars = s.toCharArray();
for(int i=shifts.length-1; i>=0; i--){
//最后一个字母移动shift[length-1]次,倒数第二个字母移动shift[length-1]+shift[length-2]次,...
num += shifts[i] % 26; //有首尾相连,取余
num %= 26; //当前字母移动总次数对26取余
char temp = chars[i];
char cur = (char)((temp + num - 'a') % 26 + 'a'); //当前字母的ASCII码,int和char可以强制转换
chars[i] = cur; //charAt(i)为常量具体值,赋值不了
}
return String.valueOf(chars);
}
}