利用循环队列的思想进行加密解密(洛谷P1914题题解,Java语言描述)
前言
在我看来,理解循环队列对我们思考问题的帮助就是:
合理利用“%”的约束,将问题的“越界”重新弹回问题范围内。
本文就是一个例子,循环队列的思想为我快速秒杀本题提供了思路。
题目要求
P1914题目链接
分析
我们想要实现’z’后是’a’,就相当于让右越界的数值返回左边界内。
这就好比一个常见的特效:一条线从屏幕右侧穿出,又从左侧穿入。
这种思想在我看来和循环队列是很像的。
循环队列在一侧“填满”而“假溢出”之后,会在另一侧填装新的元素。
当然了,队列会有满的问题,但这种思想是很好的。
就好比说“弹球游戏”实现问题约束的方式是用模拟动量守恒的方式进行完全弹性碰撞后的反弹,强制不越界;而这里的解决方式是容许一侧越界后从另一侧回来。
这种思想实现,就是依靠“%”运算符实现的。
但是,这个问题里棘手的一点是:'a’并不是char=0的情况,所以我们应该先让当前char-‘a’,然后+偏移量,最后%26(因为有26个英文字母,这是界内范围),再+‘a’,就能得到我们所求的。
这就是本题所谓的加密解密咯。
AC代码(Java语言描述)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = Integer.parseInt(scanner.nextLine());char[] password_array = scanner.nextLine().toCharArray();for (int i = 0; i < password_array.length; i++) {password_array[i] = (char)((password_array[i] - 'a' + num) % 26 + 'a');}System.out.println(new String(password_array));scanner.close();}
}
利用循环队列的思想进行加密解密(洛谷P1914题题解,Java语言描述)相关推荐
- 用博弈论的思想玩游戏(洛谷P3150题题解,Java语言描述)
前言 博弈论,博大精深啊~~ 这里就是一个简单博弈论的算法题,典型的入门级别,值得学习. 题目要求 P3150题目链接 分析 我们模拟一下胜负情况: m=1时: pb不能分割,所以zs赢了. m=2时 ...
- 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)
题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...
- Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)
题目要求 P1011题目链接 分析 这题我思考了很久,终于在今天有了比较明确的思路,讲一下吧. 我们先做个表格(手动的,这里为了展示就用Word重做了一个): 这题标签里有Fibonacci,那么与F ...
- 简单粗暴地开个十层循环(洛谷P2089题题解,Java语言描述)
题目要求 P2089题目要求 分析 既然是一定在1-3个,10种都要有,那么比起琢磨一种复杂算法,暴力求解是很好的思路啊! 既然是Java的连接,用StringBuilder就会较好. 不能直接打印S ...
- for循环两个分号之间不要乱加判断条件(记洛谷P2141题WA的经历,Java语言描述)
题目要求 P2141题目链接 分析 暴力法可解--我们只需遍历一遍数组,在里面再遍历一次,再遍历一次,共三层嵌套,需要保证内层counter数值不能与外面诸层的counter相同~~ 暴力还可防漏,很 ...
- [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...
- ios java aes_PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密
**PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式 ...
- DES的加密解密在ECB上的使用(C语言实现)——大三密码学实验
目录 实验内容 实验原理 DES加密解密 ECB(电码本模式) 代码 DES函数的构建 RE_DES函数的构建 ECB函数的构建 RE_ECB的函数的构建 主函数的构建 总代码 测试结果 实验内容 输 ...
最新文章
- HDU 1155 Bungee Jumping
- FCN制作自己的数据集、训练和测试 caffe
- 研发应该懂的binlog知识(下)
- max 安装 mysql5.x_MySQL5.7安装
- Jsch ssh登陆
- 手写table用ajax遍历,原生js把数据循遍历到前端table
- 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
- linux系统更新失败处理功能,Proxmox VE升级apt-get update失败处理 | linux运维小站–linux系统架构_服务器运维_Linux运维工程师工作手札...
- HTTP消息推送原理
- gmssl服务端和客户端程序、吉大正元身份认证网关、吉大正元SDK+USBkey 两两之间双证书双向认证数据通信测试
- 创建加密访问网站,端口443
- 金蝶K3系统单据审核时报错:无效的过程调用或参数 处理方法
- 个人投资——基本原则
- 计算机视觉之图像增广(翻转、随机裁剪、颜色变化[亮度、对比度、饱和度、色调])
- Java-append()方法
- 记录载入页面时与 ws://XXX地址/sockjs-node/xxx/websocket 的连接中断---解决办法
- std::this_thread::sleep_for 使用
- 一个比较全的vim指令记录
- 李永乐复习全书线性代数 第二章 矩阵
- 理解文件偏移相对内存偏移节偏移
热门文章
- Yii2 使用 RESTful 写API接口 实例
- 构造函数的五种继承方法
- DataTable转换Xml Xml流转换DataSet
- ASP.NET 网站路径
- PHP7.2的安装与配置(win7)
- ffmpeg rtsp转hls_Qt音视频开发24-ffmpeg音视频同步
- java中抓阄_如何进行抓阄
- 希尔排序 最坏时间_排序算法(2)
- python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?
- mysql 主主忽略错误_MySQL 主主报错: Fatal error: The slave I/O thread stops because master and slave have...