P1914 小书童——凯撒密码,学会字符串的拆分

小书童——凯撒密码 - 洛谷

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();String num=sc.next();for(int i=0;i<num.length();i++) {char nu=num.charAt(i);nu=(char)((nu-'a'+n)%26+'a');System.out.print(nu);}}    
}

下面是另一种代码,

import java.util.Scanner;  public class Main {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  // 读取移动位数  int n = scanner.nextInt();  // 读取原文字符串  String original = scanner.next();  // 初始化密码字符串  StringBuilder password = new StringBuilder();  // 遍历原文字符串中的每个字符  for (int i = 0; i < original.length(); i++) {  char ch = original.charAt(i);  // 根据移动位数计算新字符  char newChar = (char) ((ch - 'a' + n) % 26 + 'a';  // 将新字符添加到密码字符串中  password.append(newChar);  }  // 输出密码  System.out.println(password.toString());  // 关闭Scanner  scanner.close();  }  
}

分别解释 StringBuilderoriginal.charAt(i) 和 (char) ((ch - 'a' + n) % 26 + 'a') 这三个表达式。

  1. StringBuilder

StringBuilder 是 Java 中的一个类,用于构建可变字符序列。它是 String 的一个可变版本,非常适合在需要频繁修改字符串的场景中使用。使用 StringBuilder 可以避免在每次修改字符串时都创建新的 String 对象,从而提高性能。

一些常用的 StringBuilder 方法包括:

  • append(): 追加内容到 StringBuilder
  • insert(): 在指定位置插入内容。
  • delete(): 删除指定位置的字符。
  • replace(): 替换指定位置的字符。
  • toString(): 将 StringBuilder 转换为 String

例如:

 

java复制代码

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World!");
System.out.println(sb.toString()); // 输出 "Hello World!"
  1. original.charAt(i)

这是一个从字符串 original 中获取指定位置 i 的字符的方法。charAt() 方法接受一个索引 i(从 0 开始),并返回该索引处的字符。

例如:

 

java复制代码

String original = "abcdef";
char ch = original.charAt(2); // ch 的值为 'c'
  1. (char) ((ch - 'a' + n) % 26 + 'a')

这是一个计算新字符的表达式,通常用于实现 Caesar cipher(凯撒密码)或其他类似的字符替换算法。这里的 ch 是一个字符,n 是一个整数,表示移动的位数。

  • ch - 'a': 将字符 ch 转换为从 0 开始的数字。例如,如果 ch 是 'a',则结果为 0;如果 ch 是 'b',则结果为 1,以此类推。
  • ch - 'a' + n: 将 ch 对应的数字加上 n,表示将字符向前移动 n 位。
  • (ch - 'a' + n) % 26: 使用模运算确保结果始终在 0 到 25 之间,从而确保字符不会超出小写字母的范围。
  • (ch - 'a' + n) % 26 + 'a': 将数字转换回字符。如果结果为 0,则得到 'a';如果结果为 1,则得到 'b',以此类推。

例如,如果 ch 是 'a' 且 n 是 3,那么这个表达式将返回 'd'。

希望这可以帮助你理解这三个表达式!如果你有任何其他问题或需要进一步的解释,请告诉我。

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

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

相关文章

电商运营自动化新里程:取数宝引领数字化转型实践

随着电子商务行业的高速发展及复杂化&#xff0c;精细化运营已成为电商企业提升竞争力的关键所在。尤其是在海量数据处理与实时分析方面&#xff0c;自动化工具的引入对企业管理和决策带来了革命性变化。其中&#xff0c;“取数宝”作为一种先进的电商运营自动化解决方案&#…

dockerfile制作-pytoch+深度学习环境版

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 文档内容docker相关术语docker常用命令容器常用命令根据dockerfile创建容器dokerfile文件内容 docker问题&#xff1a;可能的原因和解决方法示例修改修改后的D…

解析Apache Kafka:在大数据体系中的基本概念和核心组件

关联阅读博客文章&#xff1a;探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章&#xff1a;深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章&#xff1a;深度剖析&#xff1a;计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章&a…

LuaJIT源码分析(二)数据类型

LuaJIT源码分析&#xff08;二&#xff09;数据类型 LuaJIT支持的lua数据类型和官方的lua 5.1版本保持一致&#xff0c;它的源文件中也有一个lua.h&#xff1a; // lua.h /* ** basic types */ #define LUA_TNONE (-1)#define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define L…

【数据结构】顺序表的实现——动态分配

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

vscode通过ssh连接服务器(吐血总结)

一、通过ssh连接服务器 1、打开vscode&#xff0c;进入拓展&#xff08;CtrlShiftX&#xff09;&#xff0c;下载拓展Remote - SSH。 2、点击远程资源管理器选项卡&#xff0c;选择远程&#xff08;隧道/SSH&#xff09;类别。 3、点击SSH配置。 4、在中间上部分弹出的配置文件…

【WPF应用28】WPF中的ProgressBar控件详解与应用示例

在C#开发中&#xff0c;进度条是一个非常重要的用户界面元素&#xff0c;它能够向用户展示操作的进度。ProgressBar控件是.NET Framework组件库中的一部分&#xff0c;专门用于显示任务的进度。本文将详细介绍ProgressBar控件的功能、使用方法、属性设置&#xff0c;并提供在不…

LangChain入门:9.使用FewShotPromptTemplate实现智能提示工程

在构建智能提示工程时&#xff0c;LangChain 提供了强大的 FewShotPromptTemplate 模型&#xff0c;它可以帮助我们更好地利用示例来指导大模型生成更加优质的提示。 在这篇博文中&#xff0c;我们将使用 LangChain 的 FewShotPromptTemplate 模型来设计一个智能提示工程&#…

游戏引擎中的粒子系统

一、粒子基础 粒子系统里有各种发射器&#xff08;emitter&#xff09;&#xff0c;发射器发射粒子&#xff08;particle&#xff09;。 粒子是拥有位置、速度、大小尺寸、颜色和生命周期的3D模型。 粒子的生命周期中&#xff0c;包含产生&#xff08;Spawn&#xff09;、与环…

AcrelEMS-EV 汽车制造能效管理系统解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、行业现状 1、政府、市场越来越关注碳排放指标。 2、用能设备缺乏完整的在线监视分析系统&#xff0c;无法及时发现用能异常和能源利用效率。 3、不能生产全流程监测和分析能源利用水平&#xff0c;无法及时发现浪费。 4、用…

用计算困难问题的视角看密码学算法

从计算困难问题的视角看密码学算法 计算困难问题是理论计算机和密码学的交叉论题,密码学的加密算法都基于计算困难问题(一般来说是NP-Complete和NP-Hard问题),在这篇文章里我们将讨论计算困难问题和各种加密算法的关系,从而引出我们的观点:密码学算法其实就是利用验证容易但是求…

UltraScale系列底层结构(1)——引言

目录 一、概述 二、Kintex UltraScale FPGA 三、Kintex UltraScale™ FPGA 四、Virtex UltraScale FPGA 五、Virtex UltraScale FPGA 六、Zynq UltraScale MPSoCs 一、概述 Xilinx UltraScale™ 架构是一种革命性的方法&#xff0c;用于创建可编程设备&#xff0c;这些设…

npm 与 yarn 命令比较

npm 和 yarn 都是 JavaScript 的包管理工具&#xff0c;用于管理项目中的依赖包。 安装速度 yarn: 速度较快&#xff0c;因为它会缓存已下载的包&#xff0c;并在安装时利用并行下载来最大化资源利用率。 npm: 速度较慢&#xff0c;尤其是在网络不稳定的情况下&#xff0c;可…

统计HBase表记录条数的方法

java 表的记录集个数_HBase统计表行数(RowCount)的四种方法-CSDN博客 一、hbase-shell的count命令 这是最简单直接的操作&#xff0c;但是执行效率非常低&#xff0c;适用于百万级以下的小表RowCount统计&#xff01; hbase> count ns1:t1 hbase> count t1 hbase>…

Hippo4j线程池实现技术

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容部署运行模式集成线程池监控配置参数默认配置 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家…

力扣热题100_链表_142_环形链表 II

文章目录 题目链接解题思路解题代码 题目链接 142. 环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中…

2024.2.14力扣每日一题——二叉树的层序遍历

2024.2.14 题目来源我的题解方法一 递归实现&#xff08;前序遍历记录深度&#xff09;方法二 非递归实现&#xff08;队列&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;102 我的题解 方法一 递归实现&#xff08;前序遍历记录深度&#xff09; 在递归遍…

【Spring】之AOP详解

AOP 什么是AOP&#xff1f; AOP&#xff1a;Aspect Oriented Programming&#xff0c;面向切面编程。 切面指的是某一类特定问题&#xff0c;因此面向切面编程也可以理解为面向特定方法编程。例如&#xff0c;在任何一个系统中&#xff0c;总有一些页面不是用户可以随便访问…

部分背包问题

题源看着是背包&#xff0c;其实是贪心 题目描述 阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 (N≤100) 堆金币&#xff0c;第 i 堆金币的总重量和总价值分别是mi​,vi​(1≤mi​,vi​≤100)。阿里巴巴有一个承重量为T(T≤1000) 的背包&#xff0c;但并不一定有办法将全部的…

Matlab|配电网三相不平衡潮流计算【隐式Zbus高斯法】【可设定变压器数量、位置、绕组方式】

目录 主要内容 部分代码 结果一览 1.以33节点为例 2.以12节点系统为例 下载链接 主要内容 该模型基于隐式Zbus高斯法实现对配电网的三相不平衡潮流计算&#xff0c;通过选项可实现【不含变压器】和【含变压器】两种方式下的潮流计算&#xff0c;并且通过参数设置…