题解 | #简单密码#

简单密码

http://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac

import java.util.*;

public class Main{
    //定义map容器存储按键对应数字字符的容器
    private static Map<String,String> 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);
       while(scanner.hasNext()){
           String str = scanner.nextLine();
           char[] chars = str.toCharArray();
           //构造buffer容器存储转换后的字符串
           StringBuffer buffer = new StringBuffer();
           for(char c : chars){
               //如果是正整数则不需要进行加密
               if(c>='0'&& c<='9'){
                    buffer.append(String.valueOf(c));
                }else if(c>='A'&& c<='Y'){ //如果是A~Y的大写字母则需要将其+32位转换成小写再向后移1位
                    char newChar = (char)(c+32+1);
                    buffer.append(String.valueOf(newChar));
                }else if(c=='Z'){ //如果是Z则加密成a
                    buffer.append("a");
                }else{
                //去除map容器中的key与字符进行校验并加密
                Set<String> keys = map.keySet();
                for(String k : keys){
                    if(k.contains(String.valueOf(c)))
                        buffer.append(map.get(k));
                }
               }
           }
           System.out.print(buffer.toString());
       }
    }
}
全部评论
可以把map换成数组提高效率,char[] array = new char[]{'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'}; 然后小写字母c直接,res.append(array[c - 'a']);
12 回复 分享
发布于 2022-11-14 16:28 陕西
如果用了map,还要一一遍历,那map就失去意义了。建议直接用26个字母做映射
3 回复 分享
发布于 2022-07-26 11:20
为什么要静态初始化?
2 回复 分享
发布于 2022-07-11 20:30
特殊字符怎么进行处理?
1 回复 分享
发布于 2022-05-19 21:00
最后不需要buffer.toString(),因为sout会自动调用该对象的toString方法
1 回复 分享
发布于 2023-05-12 15:42 浙江
用string代替stringbuffer也ok的把?
点赞 回复 分享
发布于 2023-03-18 14:02 上海

相关推荐

就用这个吧:支持多益再加一个空气使用费
点赞 评论 收藏
分享
评论
75
22
分享

创作者周榜

更多
牛客网
牛客企业服务