算法刷题-简单密码-JAVA

0x00 引言

为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。

题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。

0x01 难度等级

简单

0x02 代码

package 简单;

import java.util.Scanner;

/*
*
描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应:
* 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 。
是X的ascii码值加32再+1(a是97 A是65,所以是差变成小a需要加32),因为往后移动了一位 ,需要再加1
*
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
输入一组密码,长度不超过100个字符。

输出描述:
输出密码变换后的字符串

示例1
输入:
YUANzhi1987

输出:
zvbo9441987
*
*
*
* */
public class 简单密码 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        Scanner s = new Scanner(System.in);
        String s1 = s.nextLine();
        char[] m=new char[s1.length()];
        for (int i = 0; i < s1.length(); i++) {
            m[i]=(char)getI(s1.charAt(i));
//            System.out.println(m[i]);
        }
//        System.out.println("------------");
        for (int i = 0; i < m.length; i++) {
            System.out.print(m[i]);
        }
    }

    public static int getI(char i) {
            if (i >='A' && i <='Y') {
                return (char) (i + 33);
            } else if (i == 'Z') {
                return 'a';
            } else if(i >='a' && i <='z'){
                switch (i) {
                    case 'a':
                    case 'b':
                    case 'c':
                        return '2';
                    case 'd':
                    case 'e':
                    case 'f':
                        return '3';
                    case 'g':
                    case 'h':
                    case 'i':
                        return '4';
                    case 'j':
                    case 'k':
                    case 'l':
                        return '5';
                    case 'm':
                    case 'n':
                    case 'o':
                        return '6';
                    case 'p':
                    case 'q':
                    case 'r':
                    case 's':
                        return '7';
                    case 't':
                    case 'u':
                    case 'v':
                        return '8';
                    default:
                        return '9';
                }
            }else {
                return i;
            }
        }

}

0x03 算法思想

(1)考查对Ascii码表的了解

(2)考查对switch/case穿透的使用

0x04 运行结果

posted @ 2023-02-28 22:33  铺哩  阅读(47)  评论(0编辑  收藏  举报