【华为上机真题 2022】字符串加密
创始人
2024-02-23 05:31:53
0

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.3 测试样例

1.3.1 示例 1

1.3.2 示例 2

二、解题思路

三、代码实现

四、时间复杂度



注意:题目来源于网络用户分享,本文仅分享做题思路和方法,如有侵权请联系我删除!

一、题目描述

给你一串未加密的字符串 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。

1.1 输入描述

第一行为一个整数 n(1 <= n <= 1000),表示有n组测试数据,每组数据包含一行,原文 str(只含有小写字母,0< 长度 <= 50)。

1.2 输出描述

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

1.3 测试样例

1.3.1 示例 1

输入

1
xy

输出

ya

说明:第一个字符 x 偏移量是 1,即为 y,第二个字符 y 偏移量是 2,即为 a。

1.3.2 示例 2

输入

2
xy
abcde

输出

ya
bdgkr

说明:第二行输出字符偏移量分别是1,2,4,7,13

备注:解答要求 时间限制:2000ms,内存限制:64MB

二、解题思路

本题比较简单,通过公式 a[i] = a[i-1] + a[i-2] + a[i-3] 计算当前元素的偏移量,计算出偏移量后需要对 26 取余,假设当前元素的偏移量为 x,那么当前元素偏移后新的加密元素为:

str[i] = 'a' + ((str[i] - 'a') + x) % 26;

三、代码实现

代码实现如下所示。

#include 
#include 
using namespace std;int main()
{int n;while (cin>>n) {string str;int a = 1, b = 2, c = 4;for (int i = 0; i < n; ++i) {cin>>str;for (int j = 0; j < (int)str.size(); ++j) {int curt;if (j == 0) {curt = a;} else if (j == 1) {curt = b;} else if (j == 2) {curt = c;} else {curt = (a + b + c)%26;a = b;b = c;c = curt;}str[j] = 'a' + ((str[j] - 'a') + curt)%26;}cout<

在上述代码中,只需要计算当前需要偏移的数量,偏移后需要对 26 (小写字母 26 个)取余即可计算出偏移后的位置。

四、时间复杂度

时间复杂度:O(n)

其中,n 表示字符串的长度,在上述代码中,只需要遍历一次即可完成字符串的加密,所以时间复杂度为 O(n)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...