华为OD机试 Java 实现【简单密码】【牛客练习题 HJ21】,附详细解题思路

news/2024/10/30 13:37:58/

在这里插入图片描述

一、题目描述

现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9。

而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。

数据范围: 输入的字符串长度满足 1≤n≤100

二、输入描述

输入一组密码,长度不超过100个字符。

三、输出描述

输出密码变换后的字符串。

四、解题思路

  1. 读取输入的密码字符串;
  2. 创建一个字符数组 a,用于存储九键手机键盘上数字与字母的对应关系;
  3. 创建一个 StringBuilder 对象 sb,用于存储转换后的密码字符串;
  4. 遍历输入的密码字符串,对每个字符进行如下操作:
    • 如果字符是大写字母(A 到 Z),将其转换为小写字母,并往后移一位;如果移动后的字符超出小写字母范围,则循环回到 a;
    • 如果字符是小写字母(a 到 z),根据九键手机键盘上的对应关系将其转换为相应的数字;
    • 其他情况下,字符保持不变;
  5. 将转换后的字符添加到 sb 中;
  6. 输出 sb 中存储的转换后的密码字符串;

五、Java算法源码

public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String s;char[] a = {'2', '2', '2', '3', '3', '3', '4', '4', '4', '5', '5', '5','6', '6', '6', '7', '7', '7', '7', '8', '8', '8', '9', '9', '9', '9'};while ((s = bf.readLine()) != null) {StringBuilder sb = new StringBuilder();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);//直接使用if else判断if (c >= 'A' && c <= 'Z') {c += 33;//判断是否需要循环if (c > 'z') {c -= 26;}} else if (c >= 'a' && c <= 'z') {c = a[c - 'a'];}sb.append(c);}System.out.println(sb.toString());}
}

六、效果展示

在这里插入图片描述

🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/282023.html

相关文章

联想小新java,联想小新笔记本怎么样 小新笔记本介绍【图文】

有朋友准备购买笔记本&#xff0c;咨询我这样一个问题&#xff0c;联想小新笔记本怎么样?联想小新笔记本是联想于2014年4月推出的一款高配置而价格方面比较亲民的笔记本呢。接下来小编一起来大家来了解一下联想小新笔记本怎么样吧。 联想小新笔记本外观怎么样 联想小新笔记本的…

笔记本怎么打开html的面板,联想笔记本控制面板在哪里打开

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 联想笔记本控制面板打开的方法如下&#xff1a; 1、启动电脑。 2、点击电脑左下角开始键。 3、在弹出的所有程序右侧就可以看到控制面板了。 笔记本电脑(Laptop)&#xff0c;简称笔…

联想linux笔记本电脑有哪些软件,联想终于出Linux笔记本了!真的很赞

Fedora Project的负责人Matthew Miller今天在推特上宣布&#xff0c;联想出售的第一款(预装了Fedora Linux的)笔记本电脑现已上市销售&#xff0c;即ThinkPad X1 Carbon Gen 8。 大约四个月前&#xff0c;联想宣布最终计划提供Linux笔记本电脑&#xff0c;并选择了Red Hat赞助的…

【基于容器的部署、扩展和管理】 3.2 基于容器的应用程序部署和升级

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程序部署和升级 3.2 基于容器的应用程…

分享一次联想笔记本的售后体验

作为一个码农&#xff0c;每天虐待我的thinkpad s5本本将近3年了&#xff0c;基本每天都在长时间使用&#xff0c;这么长时间用下来还是比较满意的。 上周一我换了一个外设键盘&#xff08;后来才发现就是这个键盘搞得鬼&#xff09;&#xff0c;然后发现每次开机就不太好使了…

联想服务器怎么做系统备份,联想笔记本怎么做系统备份

联想笔记本怎么做系统备份 腾讯视频/爱奇艺/优酷/外卖 充值4折起 jibao231问&#xff1a; 我的本本是联想的&#xff0c;系统是Windows 7&#xff0c;感觉最近有些慢&#xff0c;想重装系统&#xff0c;应该怎么备份&#xff1f; 联想的笔记本应该有一键备份的功能的吧&#xf…

(五)CSharp-类

一、类 1、类的定义和类成员 程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合&#xff0c;并称为类。 类是一个能存储数据并执行代码的数据结构。它包含数据成员和函数成员。 表-类成员的类型 数据成员存储数据函数成员执行代码字段、常量方法、属性、构造函数…

linux(信号发送后)

目录&#xff1a; 1.引入什么是合适的时候 2.内核态和用户态 3.信号的处理 4.sigaction函数 -------------------------------------------------------------------------------------------------------------------------------- 1.引入什么是合适的时候 2.信号什么时候被处…