题解 | #简单密码#
简单密码
http://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String originalPassword = scan.nextLine(); // 获取最原始的密码
HashMap<Character, Integer> CharacterToInteger = new HashMap<>(); // 定义一个 HashMap,用于存放每一个小写字母对应的数字
int index = 0;
for (int i = 2; i <= 9; i++) {
if (i == 7 || i == 9) { // 如果当前的数字键为 7 或者为 9
for (int j = 1; j <= 4; j++) {
CharacterToInteger.put((char) ('a' + index), i);
index++;
}
} else {
for (int j = 1; j <= 3; j++) {
CharacterToInteger.put((char) ('a' + index), i);
index++;
}
}
}
char[] chrsPassword = originalPassword.toCharArray(); // 将字符串转换为 char 类型的数组
StringBuffer changePassword = new StringBuffer(""); // 定义一个 StringBuffer,用于存放转换后的密码
for (int i = 0; i < chrsPassword.length; i++) {
char currentChar = chrsPassword[i]; // 获取当前的字符
if (currentChar >= 'a' && currentChar <= 'z') { // 如果当前字符是小写字母,则将其转换为对应的数字
int number = CharacterToInteger.get(currentChar);
changePassword.append(number);
} else if (currentChar >= 'A' && currentChar <= 'Z') { // 如果当前字符是大写字母,则将其向后移动一位后,再转换成小写字母
if (currentChar == 'Z') {
currentChar = 'a';
} else {
currentChar = (char) (currentChar + 1 + 32);
}
changePassword.append(currentChar);
} else { // 如果当前字符不是大小字母中的任意一种,不需要进行转换
changePassword.append(currentChar);
}
}
System.out.println(changePassword);
}
}