密码解密
2025-11-11 本文已影响0人
何以解君愁
给定一段“密文”字符串s,其中字符都是经过"密码本”映射的,现需要将“密文”解密并且输出映射的规则 ("a-i"分别用"1-9"表示,"j-z" 分别用"10-26"表示
约束:映射始终唯一
输入:201920*
输出:tst
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
Map<String,Character> tempMap = new HashMap<>();
for(int i = 1;i < 27;i++){
if(i < 10){
Character sa = (char)(i - 1 + 'a');
tempMap.put(String.valueOf(i),sa);
}else{
StringBuffer ss = new StringBuffer();
Character sa = (char)(i - 1 + 'a');
ss.append(String.valueOf(i)).append("*");
tempMap.put(ss.toString(),sa);
}
}
StringBuffer res = new StringBuffer();
for(int i = 0;i < s.length();i++){
int sum = 0;
if(i + 2 < s.length()&&!Character.isDigit(s.charAt(i + 2))){
sum = sum * 10 + s.charAt(i) - '0';
sum = sum * 10 + s.charAt(i + 1) - '0';
StringBuffer ss = new StringBuffer();
ss.append(String.valueOf(sum)).append("*");
//从tempMap获取结果
res.append(tempMap.get(ss.toString()));
i = i + 2;
}else{
StringBuffer ss = new StringBuffer();
ss.append(String.valueOf(s.charAt(i) - '0'));
//从tempMap获取结果
res.append(tempMap.get(ss.toString()));
}
}
System.out.print(res);
}
}