哈希表算法

密码解密

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);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读