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 1≤n≤100 

输入描述:

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

输出描述:

输出密码变换后的字符串

示例1

输入:

YUANzhi1987
输出:
zvbo9441987

最终代码实现

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/**
 * 考点 英文字符大小写转换 
 * 大写转换成小写 +32
 * 小写转换成大写 -32
 */
public class HJ21 {
    
    //定义map容器存储按键对应数字字符的容器
    private static Map map = new HashMap<>();
    //静态初始化、加载map容器
    static{
        //与题干中的拼音九键相对应
        map.put("1","1");
        map.put("abc","2");
        map.put("def","3");
        map.put("ghi","4");
        map.put("jkl","5");
        map.put("mno","6");
        map.put("pqrs","7");
        map.put("tuv","8");
        map.put("wxyz","9");
        map.put("0","0");
    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        char[] charArray = input.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (char c:charArray){
            //数字保持不变
            if (c>='0' &&c<='9'){
                builder.append(String.valueOf(c));
            }else if(c>='A' &&c<='Y'){
                //大写转换成小写,然后相后移动一位
                
                char newChar = (char)(c+32+1);
                //或者
                char lowerCase = Character.toLowerCase(c);
                char newChar = (char)(lowerCase+1);
                builder.append(String.valueOf(newChar));
            }else if (c=='Z'){
                //特殊的Z
                builder.append('a');
            }else{
                //小写的处理
                Set keys = map.keySet();
                for (String key:keys){
                    if(key.contains(String.valueOf(c)))
                        builder.append(map.get(key));
                }
            }
        }
        System.out.println(builder.toString());
    }
}

你可能感兴趣的:(华为机试,算法,数据结构,java)