北京市网站建设_网站建设公司_企业官网_seo优化
2025/12/29 22:00:21 网站建设 项目流程

(新卷,100分)- 密码解密(Java & JS & Python & C)

题目描述

给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。

映射的规则('a' ~ 'i')分别用('1' ~ '9')表示;('j' ~ 'z')分别用("10*" ~ "26*")表示。

约束:映射始终唯一。

输入描述

“密文”字符串

输出描述

明文字符串

备注

翻译后的文本长度在100以内

用例
输入20*19*20*
输出tst
说明
题目解析

本题有多种解题思路,我的思路是利用字符串替换操作。

即将如下密文和明文进行按照顺序依次映射替换

  • "26*" → "z"
  • "25*" → "y"
  • ...
  • "10*" → "j"
  • "9" → "i"
  • ...
  • "1" → "a"

这里优先将从“26*” ~ "10*" 开始映射替换,比如题目用例:

20*19*20*

如果优先进行 "1" ~ “9” 密文的映射替换,则会产生错误答案。

更多实现细节,请看代码。

JS算法源码
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; // 输入处理 void (async function () { let s = await readline(); for (let i = 26; i >= 1; i--) { const key = i + (i > 9 ? "*" : ""); const val = String.fromCharCode(97 + i - 1); s = s.replaceAll(key, val); } console.log(s); })();
Java算法源码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); for (int i = 26; i >= 1; i--) { String key = i + (i > 9 ? "\\*" : ""); String val = String.valueOf((char) ('a' + i - 1)); s = s.replaceAll(key, val); } System.out.println(s); } }
Python算法源码
# 输入获取 s = input() for i in range(26, 0, -1): key = str(i) if i > 9: key += "*" val = chr(97 + i - 1) s = s.replace(key, val) print(s)
C算法源码
#include <stdio.h> #include <stdlib.h> #include <string.h> char* replace(char* s, char* old, char* new) { char* sub = strstr(s, old); if(sub == NULL) { return s; } char* res = (char*) calloc(100, sizeof(char)); while (sub != NULL) { sub[0] = '\0'; strcat(res, s); strcat(res, new); s = sub + strlen(old); sub = strstr(s, old); } strcat(res, s); return res; } int main() { char* s = (char*) calloc(100, sizeof(char)); gets(s); for (int i = 26; i >= 1; i--) { char key[4]; sprintf(key, "%d", i); if(i > 9) { strcat(key, "*"); } char val[2]; sprintf(val, "%c", 97 + i - 1); s = replace(s, key, val); } puts(s); return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询