[华为od]给你一串未加密的字符串 str 100

题目:

题目描述:

给你一串未加密的字符串 str,通过对字符串的每一个字母进行改变来实现加密,加密方式

是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:

a[0]=1,a[1]=2,a[2]=4。

当 i>=3 时,数组元素 a[i]=a[i-1]+a[i-2]+a[i-3],

例如:原文 abcde 加密后 bdgkr,其中偏移量分别是 1,2,4,7,13。

输入描述:

第一行为一个整数 n(1<=n<=1000),表示有 n 组测试数据,每组数据包含一行,原文 str

(只含有小写字母,0<长度<=50)。

输出描述:

每组测试数据输出一行,表示字符串的密文

补充说明:

解答要求

时间限制:2000ms,内存限制:64MB

题解:

这个不难,主要是注意需要构建一个字符和偏移量数字的对应Map关系。然后遍历这个map来拿到输出的字符串。

代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class ChangeWords {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int dataCount = Integer.valueOf(sc.nextLine());String[] strings = new String[dataCount];for (int i = 0; i < dataCount; i++) {strings[i] = sc.nextLine();}Map<Integer, Character> charMap = new HashMap<>();for (int i = 0; i < 26; i++) {if (i == 0) {charMap.put(0, 'a');} else {charMap.put(i, (char) ('a' + i));}}int[] arr = new int[51];arr[0] = 1;arr[1] = 2;arr[2] = 4;for (int i = 3; i < 51; i++) {arr[i] = (arr[i - 1] + arr[i - 2] + arr[i - 3]) % 26;}for(int i =0;i < dataCount; i++){System.out.println(getChangeWords(strings[i],charMap,arr));}}private static String getChangeWords(String changeWords, Map<Integer, Character> charMap, int[] arr) {char[] charArrys = changeWords.toCharArray();char[] changeArrys = new char[charArrys.length];for (int i = 0; i < charArrys.length; i++) {int index = charArrys[i]-'a';int changeIndex = (index+arr[i])%26;changeArrys[i] = charMap.get(changeIndex);}return String.valueOf(changeArrys);}
}

验证结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651339.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansible一键部署zabbix+grafana+agent

目录 IP地址规划ansible安装分开部署安装zabbix-mysql安装zabbix-server安装zabbix-agent安装zabbix-grafana 一键部署自动发现 IP地址规划 名字地址主要安装软件ansible-server192.168.40.137zabbix-server、ansible、zabbix-mysqlzabbix-agent1192.168.40.138zabbix-agentza…

CyberData统一元数据服务

CyberData统一元数据服务功能完善&#xff0c;实现了湖仓平台元数据在整个平台的统一管理以及外部数据源元数据的主动发现和多计算引擎间元数据的互通互联。 同时&#xff0c;我们支持跨多元计算场景&#xff0c;以及在元数据基础上的统一数据权限管理和数据湖的自动化优化加速…

mac: docker安装及其Command not found: docker

已经安装了docker desktop&#xff0c;没安装的 点击安装 傻瓜式安装即可 接着打开终端&#xff1a;好一个 Comand not found:docker 看我不把你整顿&#xff0c;解决如下&#xff1a; 如果你在 macOS 上安装了 Docker Desktop&#xff0c;但是终端无法识别 docker 命令&…

【JVM】从i++到JVM栈帧

【JVM】从i到JVM栈帧 本篇博客将用两个代码例子&#xff0c;简单认识一下JVM与栈帧结构以及其作用 从i与i说起 先不急着看i和i&#xff0c;我们来看看JVM虚拟机&#xff08;请看VCR.JPG&#xff09; 我们初学JAVA的时候一定都听到过JAVA“跨平台”的特性&#xff0c;也就是…

Linux之线程管理

目录 第1关&#xff1a;创建线程 任务描述 相关知识 使用pthread_create函数创建线程 编程要求 答案&#xff1a; 第2关&#xff1a;线程挂起 任务描述 相关知识 使用pthread_join挂起线程 编程要求 答案&#xff1a; 第3关&#xff1a;线程终止 任务描述 相关知识 使用pthread…

运行游戏提示dll文件丢失,分享多种有效的解决方法

在我们日常频繁地利用电脑进行娱乐活动&#xff0c;特别是畅玩各类精彩纷呈的电子游戏时&#xff0c;常常会遭遇一个令人困扰的问题。当我们满怀期待地双击图标启动心仪的游戏程序&#xff0c;准备全身心投入虚拟世界时&#xff0c;屏幕上却赫然弹出一条醒目的错误提示信息&…

【中级软件设计师】上午题12-软件工程(3):项目活动图、软件风险、软件评审、软件项目估算

【中级软件设计师】上午题12-软件工程&#xff08;3&#xff09; 1 软件项目估算1.1 COCOMO估算模型1.2 COCOMOⅡ模型 2 进度管理2.1 gantt甘特图2.2 pert图2.3 项目活动图2.3.1 画项目图 3 软件配置管理4 软件风险4.1 风险管理4.2 风险识别4.3 风险预测4.4 风险评估4.5 风险控…

Rest微服务案例

Rest 父工程构建microservicecloud-api公共子模块Modulemicroservicecloud-provider-dept-8001部门微服务提供者Modulemicroservicecloud-consumer-dept-80部门微服务消费者Module 以Dept部门模块做一个微服务通用案例 Consumer消费者&#xff08;Client&#xff09;通过REST调…

react项目发布后,浏览器源码泄露的解决方案

在使用create-react-app时&#xff0c;打包生产环境npm run build&#xff0c;浏览器打开后仍然是可以看到源码的。源码都没上传&#xff0c;为啥线上能看到源码 。 例&#xff1a;线上与服务器 线上与源码 react-scripts build和npm run build 有什么不同 react-scripts bui…

PID算法学习

PID算法介绍 在过程控制中&#xff0c;按偏差的比例&#xff08;P&#xff09;、积分&#xff08;I&#xff09;和微分&#xff08;D&#xff09;进行控制的PID控制器&#xff08;亦称PID调节器&#xff09;是应用最为广泛的一种自动控制器。它具有原理简单&#xff0c;易于实…

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符&#xff0c;盘符下可以存放目录与文件&#xff0c;而在Ubantu中没有盘符的概念&#xff0c;只有目录结构。实际上不同的目录可能挂载在不同的分区之下&#xff0c;如果想要查看当前目录位于磁盘的哪个分区…

【java数据结构-优先级队列向下调整Topk问题,堆的常用的接口详解】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a;基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 …