news 2026/4/16 9:02:36

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 密码解密(Java JS Python C)

(新卷,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; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 4:00:13

清华镜像源配置后依旧慢?尝试更换上游节点

清华镜像源配置后依旧慢&#xff1f;尝试更换上游节点 在深度学习项目启动阶段&#xff0c;最让人焦头烂额的场景之一莫过于&#xff1a;明明已经配置了清华 TUNA 镜像源&#xff0c;却还是卡在 pip install torch 或 docker pull pytorch-cuda 上几个小时动弹不得。网速显示没…

作者头像 李华
网站建设 2026/4/10 22:50:37

PyTorch Distributed Sampler:多卡训练样本均匀分配

PyTorch Distributed Sampler&#xff1a;多卡训练样本均匀分配 在深度学习模型日益庞大的今天&#xff0c;单张 GPU 已经很难支撑动辄上百 GB 显存需求的训练任务。从 ResNet 到 BERT&#xff0c;再到如今的大语言模型&#xff0c;参数量的爆炸式增长迫使开发者转向多卡甚至多…

作者头像 李华
网站建设 2026/4/15 15:25:35

【多线程】CSP模式

CSP&#xff08;Communicating Sequential Processes&#xff09;模型详解 Actor vs CSP 对比 Actor 模型: ┌─────────┐ ┌─────────┐ │ Actor A │ ──msg──►│ Actor B │ 每个 Actor 有自己的邮箱 │ [邮箱] │ │ [邮箱] │…

作者头像 李华
网站建设 2026/4/15 5:33:07

Docker Run参数详解:启动PyTorch容器的各类选项

Docker Run参数详解&#xff1a;启动PyTorch容器的各类选项 在现代深度学习开发中&#xff0c;一个常见的场景是&#xff1a;你刚刚拿到一台配备NVIDIA GPU的新服务器&#xff0c;满心期待地准备开始训练模型&#xff0c;结果却卡在了环境配置上——CUDA版本不匹配、cuDNN缺失、…

作者头像 李华
网站建设 2026/4/11 3:38:57

如何在PyTorch-CUDA-v2.8中安装额外Python包?方法总结

如何在 PyTorch-CUDA-v2.8 中安装额外 Python 包&#xff1f;方法总结 在现代深度学习开发中&#xff0c;使用预构建的容器镜像已经成为标准实践。特别是像 PyTorch-CUDA-v2.8 这类高度集成的环境&#xff0c;极大简化了从本地实验到集群部署的流程。然而&#xff0c;现实项目往…

作者头像 李华