题解 | #简单密码#

简单密码

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

import java.util.*;

public class Main {
    static Map<Integer,String> map = new LinkedHashMap<Integer, String>(){{
        put(0,"0");
        put(1,"1");
        put(2,"abc");
        put(3,"def");
        put(4,"ghi");
        put(5,"jkl");
        put(6,"mno");
        put(7,"pqrs");
        put(8,"tuv");
        put(9,"wxyz");
    }};
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        StringBuilder sb = new StringBuilder();
        if (s.length() <= 100){
            for (int i = 0; i < s.length(); i++) {
                char a = s.charAt(i);
                //数字不变
                if (a >= '0' && a<= '9'){
                    sb.append(a);
                }else if (a >= 'a' && a<= 'z'){
                    //小写字母变换
                    sb.append(toLowerChar(a));
                }else if (a>= 'A' && a<= 'Z'){
                    //大写字母变换
                    char tem = Character.toLowerCase(a);
                    for(Map.Entry<Integer,String> m : map.entrySet()){
                        String value = m.getValue();
                        if (value.indexOf(Character.toString(tem)) > -1){
                            String late = value.substring(value.length() - 1);
                            //与最后一位相同
                            if (late.equals(Character.toString(tem))){
                                sb.append(toLateStr(value,tem,m.getKey()));
                            }else{
                                //与其他位相同
                                sb.append(toMoveStr(value,tem));
                            }
                        }
                    }
                }
            }
        }
        System.out.println(sb.toString());
    }

    //小写字母变数字
    private static Integer toLowerChar(char c){
        for(Map.Entry<Integer,String> m : map.entrySet()){
            String value = m.getValue();
            if (value.indexOf(Character.toString(c)) > -1){
                return m.getKey();
            }
        }
        return null;
    }
    
    //大写字母得最后一位移位
    private static String toLateStr(String value,char tem,Integer key) {
        String late = value.substring(value.length() - 1);
        //与最后一位相同
        String valueLate = null;
        if (late.equals(Character.toString(tem))) {
            if (key == 9) {
                valueLate = map.get(2);
            } else {
                valueLate = map.get(key + 1);
            }
        }
        return valueLate.substring(0,1);
    }
    
    //大写字母非最后一位
    private static char toMoveStr(String value,char tem){
        char[] chArr = value.toCharArray();
        for (int j = 0; j < chArr.length - 1; j++) {
            if (chArr[j] == tem){
                return chArr[j+1];
            }
        }
        return 0;
    }
}

全部评论

相关推荐

头像
02-15 16:23
中南大学 Java
野猪不是猪🐗:签了美团真是不一样! 亲戚们都知道我签了美团,过年都围着我问送一单多少钱,还让弟弟妹妹们引以为戒,笑我爸我妈养了个🐢孩子,说从小就知道我这个人以后肯定没出息,我被骂的都快上天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务