描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9. 而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。 数字和其它的符号都不做变换。 数据范围: 输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 输入描述: 输入一组密码,长度不超过100个字符。
输出描述: 输出密码变换后的字符串
示例1 输入: YUANzhi1987
输出: zvbo9441987
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] nums = new int[]{0,1,2,3,4,5,6,7,8,9};
String[] zimus = new String[]{"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
String realStr = "";
char[] chars = (scanner.nextLine()).toCharArray();
for (int i=0;i<chars.length;i++) {
char singleChar = chars[i];
if (Character.isUpperCase(singleChar)) {
// 是大写字母,转小写字母
char xiaoxiezimu = Character.toLowerCase(singleChar);
// 再往后移一位,tp:如果是字母z后移是a
for (int j=0; j<zimus.length; j++) {
String zimusItemStr = zimus[j];
// 遍历字母数组,判断当前字母属于哪个item
if (zimusItemStr.contains(Character.toString(xiaoxiezimu))) {
if (zimusItemStr.charAt(zimusItemStr.length() - 1) == xiaoxiezimu) {
if (xiaoxiezimu != 'z') {
realStr += zimus[j+1].charAt(0);
} else {
realStr += 'a';
}
} else {
realStr += zimusItemStr.charAt(zimusItemStr.indexOf(xiaoxiezimu) + 1);
}
}
}
} else if (Character.isLowerCase(singleChar)) {
// 是小写字母,转数字
for (int k = 0; k < zimus.length; k++) {
if (zimus[k].contains(Character.toString(singleChar))) {
realStr += nums[k];
}
}
} else {
// 其它情况直接添加
realStr += singleChar;
}
}
System.out.println(realStr);
}
}



京公网安备 11010502036488号