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

在这里插入图片描述

一、题目描述

现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 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机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,java,开发语言,华为,算法,学习)