import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 进行凯撒解密 * @param password string字符串 旺仔哥哥的密码 * @param n int整型 每个字符加密过程中错位的次数 * @return string字符串 */ public String decodeWangzai (String password, int n) { // write code here n %= 26; // n的范围限制在[0,25]之间 char[] cArr = password.toCharArray(); StringBuilder res = new StringBuilder(); for (int i = 0; i < cArr.length; i++) { // 原始位置 int originalPos = cArr[i] - 'a'; int newPos = 0; // 'a' if(originalPos == 0){ newPos = 26 - n; }else{ // x y z a b c d e f g ...x y z // -3 -2 -1 0 1 2 3 4 5 6 ...23 24 25 // 非'a',当originalPos = 3(也就是字母为d),n = 5时,3-5 = -2(字母y的位置,-2+26 = 24) newPos = originalPos - n < 0 ? originalPos - n + 26 : originalPos - n; } char c = (char)(newPos+'a'); res.append(c); } // zabc -> 1 = abcd // 0 1 2 3 //逆向: 26-1 1-1 2-1 3-1 return new String(res); } }