前言
在我看来,理解循环队列对我们思考问题的帮助就是: 合理利用“%”的约束,将问题的“越界”重新弹回问题范围内。
本文就是一个例子,循环队列的思想为我快速秒杀本题提供了思路。
题目要求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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?