首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:286903 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 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 。
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足

输入描述:

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



输出描述:

输出密码变换后的字符串

示例1

输入

YUANzhi1987

输出

zvbo9441987
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] index = {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};

        char[] input = in.nextLine().toCharArray();
        for(int i=0; i<input.length; i++) {
            if(input[i]>='0' && input[i]<='9') {
                System.out.print(input[i]);
                continue;
            }

            if(input[i]>='a' && input[i]<='z') {
                System.out.print(index[input[i]-'a']);
                continue;
            }

            if(input[i]>='A' && input[i]<'Z') {
                System.out.print((char)(input[i]-'A'+'a'+1));
                continue;
            }

            if(input[i]=='Z') {
                System.out.print('a');
            }
        }
    }
}

发表于 2024-04-27 11:19:20 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String password = sc.nextLine();
        String a = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        String b = "1234567890bcdefghijklmnopqrstuvwxyza22233344455566677778889999";
        String result = "";
        for (int i = 0; i < password.length(); i++) {
            int index = a.indexOf(password.charAt(i));
            result += b.charAt(index);
        }
        System.out.println(result);
    }
}
编辑于 2024-04-16 23:13:26 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String s = in.next();
            for(int i = 0; i < s.length(); i++) {
                String temp = s.substring(i, i + 1);
                if(temp.matches("[a-z]")) {
                    System.out.print(getString(temp));
                } else if(temp.matches("[A-Z]")) {
                    System.out.print(mvString(temp));
                } else {
                    System.out.print(temp);
                }
            }
        }
    }
    //小写
    public static String getString(String s) {
        String res = "";
        if("abc".contains(s)) {
            res = "2";
        } else if("def".contains(s)){
            res = "3";
        }else if("ghi".contains(s)){
            res = "4";
        }else if("jkl".contains(s)){
            res = "5";
        }else if("mno".contains(s)){
            res = "6";
        }else if("pqrs".contains(s)){
            res = "7";
        }else if("tuv".contains(s)){
            res = "8";
        }else if("wxyz".contains(s)){
            res = "9";
        }
        return res;
    }
    //大写
    public static String mvString(String s) {
        String res = "";
        if("Z".equals(s)){
            res = "a";
        } else {
            res = String.valueOf((char)(s.toLowerCase().charAt(0) + 1));
        }
        return res;
    }
}
发表于 2024-03-31 23:38:35 回复(0)
还是映射表爽啊
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args)  {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        String password = simplePassword(line);
        System.out.println(password);
    }
    private  static   char[] map = new char[128];
    static {
        map['a'] = '2';map['b'] = '2';map['c'] = '2';
        map['d'] = '3';map['e'] = '3';map['f'] = '3';
        map['g'] = '4';map['h'] = '4';map['i'] = '4';
        map['j'] = '5';map['k'] = '5';map['l'] = '5';
        map['m'] = '6';map['n'] = '6';map['o'] = '6';
        map['p'] = '7';map['q'] = '7';map['r'] = '7';map['s'] = '7';
        map['t'] = '8';map['u'] = '8';map['v'] = '8';
        map['w'] = '9';map['x'] = '9';map['y'] = '9';map['z'] = '9';
        for (char c = 'A'; c < 'Z'; c++) {
            map[c] = (char) (c - 'A' + 'a'+1);
        }
        for (char c = '0'; c <= '9'; c++) {
            map[c] = c;
        }
        map['Z'] = 'a';

    }



    private static String simplePassword(String line) {
        char[] arr = line.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            char c = arr[i];
            char nc = map[c];
            arr[i] = nc;
        }
        return new String(arr);
    }
}

发表于 2024-03-14 14:25:18 回复(0)
精简版屎山代码
import java.util.Scanner;
public class hj21 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if(c >= 'A' && c <= 'Z'){
                c = (char) ((c + 33-97)%26 +97);
            }else if(c >= 'a' && c <= 'c'){
                c = '2';
            }else if(c >= 'd' && c <= 'f'){
                c = '3';
            }else if(c >= 'g' && c <= 'i'){
                c = '4';
            }else if(c >= 'j' && c <= 'l'){
                c = '5';
            }else if(c >= 'm' && c <= 'o'){
                c = '6';
            }else if(c >= 'p' && c <= 's'){
                c = '7';
            }else if(c >= 't' && c <= 'v'){
                c = '8';
            }else if(c >= 'w' && c <= 'z'){
                c = '9';
            }
            System.out.print(c);
        }
    }
}

发表于 2024-01-13 17:42:58 回复(0)
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        char[] chars = s.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char c : chars) {
            //    如果是正整数就不需要加密
            if (c >= '0' && c <= '9') {
                sb.append(c);
            } else if (c >= 'A' && c <= 'Y') {
                //    如果是大写字母 那么就将其转为小写字母并且后移一位
                char c1 = (char) (c + 32 + 1);
                sb.append(c1);
            } else if (c == 'Z') {
                sb.append('a');
            } else {
                //    小写字母进行map校验
                switch (c) {
                    case 1:
                        sb.append(1);
                        break;
                    case 'a':
                    case 'b':
                    case 'c':
                        sb.append(2);
                        break;
                    case 'd':
                    case 'e':
                    case 'f':
                        sb.append(3);
                        break;
                    case 'g':
                    case 'h':
                    case 'i':
                        sb.append(4);
                        break;
                    case 'j':
                    case 'k':
                    case 'l':
                        sb.append(5);
                        break;
                    case 'm':
                    case 'n':
                    case 'o':
                        sb.append(6);
                        break;
                    case 'p':
                    case 'q':
                    case 'r':
                    case 's':
                        sb.append(7);
                        break;
                    case 't':
                    case 'u':
                    case 'v':
                        sb.append(8);
                        break;
                    case 'w':
                    case 'x':
                    case 'y':
                    case 'z':
                        sb.append(9);
                        break;
                    case '0':
                        sb.append(0);
                        break;
                }
            }
        }
        System.out.println(sb);
    }

发表于 2024-01-11 20:40:02 回复(0)
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] arg){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String result = str.replaceAll("[abc]", "2")
                .replaceAll("[def]", "3")
                .replaceAll("[ghi]", "4")
                .replaceAll("[jkl]", "5")
                .replaceAll("[mno]", "6")
                .replaceAll("[pqrs]", "7")
                .replaceAll("[tuv]", "8")
                .replaceAll("[wxyz]", "9");
        Map<String, String> dict = new HashMap();
        for (int i = 'A'; i < 'Z'; i++) {
            char i1 = (char) (i + 1);
            dict.put(String.valueOf((char) i), String.valueOf(i1).toLowerCase());
        }
        dict.put("Z", "a");
        for (Map.Entry<String, String> entry: dict.entrySet()) {
            result = result.replaceAll(entry.getKey(), entry.getValue());
        }
        System.out.println(result);
    }
}

发表于 2024-01-06 21:36:28 回复(0)
俺这是写了个啥玩意儿啊
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        //1. 小写字母转九键
        // for(int i = 0;i < str.length();i++){
        //     switch(str.charAt(i)){
        //         case 'a','b','c':
        //         str.replace()
        //     }
        // }
        str = str.replace('a','2')
        .replace('b','2')
        .replace('c','2')
        .replace('d','3')
        .replace('e','3')
        .replace('f','3')
        .replace('g','4')
        .replace('h','4')
        .replace('i','4')
        .replace('j','5')
        .replace('k','5')
        .replace('l','5')
        .replace('m','6')
        .replace('n','6')
        .replace('o','6')
        .replace('p','7')
        .replace('q','7')
        .replace('r','7')
        .replace('s','7')
        .replace('t','8')
        .replace('u','8')
        .replace('v','8')
        .replace('w','9')
        .replace('x','9')
        .replace('y','9')
        .replace('z','9')
        //2. 大写字母小写之后后移一位
        .replace('A','b')
        .replace('B','c')
        .replace('C','d')
        .replace('D','e')
        .replace('E','f')
        .replace('F','g')
        .replace('G','h')
        .replace('H','i')
        .replace('I','j')
        .replace('J','k')
        .replace('K','l')
        .replace('L','m')
        .replace('M','n')
        .replace('N','o')
        .replace('O','p')
        .replace('P','q')
        .replace('Q','r')
        .replace('R','s')
        .replace('S','t')
        .replace('T','u')
        .replace('U','v')
        .replace('V','w')
        .replace('W','x')
        .replace('X','y')
        .replace('Y','z')
        .replace('Z','a');
        //输出
        System.out.println(str);
    }
}


发表于 2023-12-21 21:50:59 回复(2)
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        str = str.replaceAll("[abc]", "2")
                .replaceAll("[def]", "3")
                .replaceAll("[ghi]", "4")
                .replaceAll("[jkl]", "5")
                .replaceAll("[mno]", "6")
                .replaceAll("[pqrs]", "7")
                .replaceAll("[tuv]", "8")
                .replaceAll("[wxyz]", "9");

        StringBuilder stb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            String s = str.charAt(i)+"";
            if (s.matches("[A-Z]")) {
                s = s.toLowerCase();
                if ("z".equals(s)) {
                    stb.append("a");
                } else {
                    char c = s.charAt(0);
                    stb.append((char) (c+1));
                }
            } else {
                stb.append(s);
            }
        }
        System.out.println(stb);
    }
}

发表于 2023-09-27 16:39:18 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)>='a'&&str.charAt(i)<='c'){
                System.out.print("2");
            }else if(str.charAt(i)>='d'&&str.charAt(i)<='f'){
                System.out.print("3");
            }else if(str.charAt(i)>='g'&&str.charAt(i)<='i'){
                System.out.print("4");
            }else if(str.charAt(i)>='j'&&str.charAt(i)<='l'){
                System.out.print("5");
            }else if(str.charAt(i)>='m'&&str.charAt(i)<='o'){
                System.out.print("6");
            }else if(str.charAt(i)>='p'&&str.charAt(i)<='s'){
                System.out.print("7");
            }else if(str.charAt(i)>='t'&&str.charAt(i)<='v'){
                System.out.print("8");
            }else if(str.charAt(i)>='w'&&str.charAt(i)<='z'){
                System.out.print("9");
            }else if(str.charAt(i)>='A'&&str.charAt(i)<='Y'){
                System.out.print((char)((int)str.charAt(i)+33));
            }else if(str.charAt(i)=='Z'){
                System.out.print("a");
            }else{
                System.out.print(str.charAt(i));
            }
        }
    }
}

发表于 2023-09-15 21:11:57 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        char[] str=in.nextLine().toCharArray();
        for(int i=0;i<str.length;i++){
            System.out.print(parse(str[i]));
        }
    }

    private static char parse(char c){
        if(c>='a'&&c<='z'){
            if(c>='a'&&c<='c'){
                return '2';
            }
            if(c>='d'&&c<='f'){
                return '3';
            }
            if(c>='g'&&c<='i'){
                return '4';
            }
            if(c>='j'&&c<='l'){
                return '5';
            }
            if(c>='m'&&c<='o'){
                return '6';
            }
            if(c>='p'&&c<='s'){
                return '7';
            }
            if(c>='t'&&c<='v'){
                return '8';
            }
            if(c>='w'&&c<='z'){
                return '9';
            }
        }
        if(c>='A'&&c<='Z'){
            return (char)((c-'A'+1)%26+'a');
        }
        return c;
    }
}

发表于 2023-09-10 15:38:27 回复(0)
import java.util.HashMap;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        String pwd = new Scanner(System.in).nextLine();
        HashMap<Character, Integer> charNumMapper = new HashMap<>();
        {
            charNumMapper.put('a', 2);
            charNumMapper.put('b', 2);
            charNumMapper.put('c', 2);
            charNumMapper.put('d', 3);
            charNumMapper.put('e', 3);
            charNumMapper.put('f', 3);
            charNumMapper.put('g', 4);
            charNumMapper.put('h', 4);
            charNumMapper.put('i', 4);
            charNumMapper.put('j', 5);
            charNumMapper.put('k', 5);
            charNumMapper.put('l', 5);
            charNumMapper.put('m', 6);
            charNumMapper.put('n', 6);
            charNumMapper.put('o', 6);
            charNumMapper.put('p', 7);
            charNumMapper.put('q', 7);
            charNumMapper.put('r', 7);
            charNumMapper.put('s', 7);
            charNumMapper.put('t', 8);
            charNumMapper.put('u', 8);
            charNumMapper.put('v', 8);
            charNumMapper.put('w', 9);
            charNumMapper.put('x', 9);
            charNumMapper.put('y', 9);
            charNumMapper.put('z', 9);
        }

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < pwd.length(); i++) {
            char c = pwd.charAt(i);
            if (c >= 'A' && c <= 'Z') {
                sb.append(c == 'Z' ? 'a' : (char) ((c ^ 32) + 1));
            } else if (c >= 'a' && c <= 'z') {
                sb.append(charNumMapper.get(c));
            } else {
                sb.append(c);
            }
        }
        System.out.println(sb);
    }
}

发表于 2023-08-09 03:46:15 回复(1)
为啥本地跑代码用时零点几毫秒,自测运行就时几十毫秒,挤不进排行榜啊。试了下排行榜里的代码,运行时间没我的短啊。。。。
发表于 2023-07-13 13:36:27 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String input = in.nextLine();
            System.out.println(getKey(input));
        }
    }

    public static String getKey(String input) {
        String result = "";
        for (int i = 0; i < input.length(); i++) {
            switch (input.charAt(i)) {
                case 'a':
                case 'b':
                case 'c':
                    result += '2';
                    break;
                case 'd':
                case 'e':
                case 'f':
                    result += '3';
                    break;
                case 'g':
                case 'h':
                case 'i':
                    result += '4';
                    break;
                case 'j':
                case 'k':
                case 'l':
                    result += '5';
                    break;
                case 'm':
                case 'n':
                case 'o':
                    result += '6';
                    break;
                case 'p':
                case 'q':
                case 'r':
                case 's':
                    result += '7';
                    break;
                case 't':
                case 'u':
                case 'v':
                    result += '8';
                    break;
                case 'w':
                case 'x':
                case 'y':
                case 'z':
                    result += '9';
                    break;
                default:
                    break;
            }
            if (input.charAt(i) >= 'A' && input.charAt(i) <= 'Y') {
                result += (char)(33 + input.charAt(i));
                continue;
            }
            if (input.charAt(i) >= '0' && input.charAt(i) <= '9') {
                result += input.charAt(i);
                continue;
            }
            if (input.charAt(i) == 'Z') {
                result += 'a';
            }
        }

        return result;
    }
}

发表于 2023-07-03 09:27:06 回复(0)
public class Test04 {
    public static void main(String[] args) {
        Map<Character,Integer> map = new HashMap<>();
        map.put('1',1);
        map.put('a',2);map.put('b',2);map.put('c',2);
        map.put('d',3);map.put('e',3);map.put('f',3);
        map.put('g',4);map.put('h',4);map.put('i',4);
        map.put('j',5);map.put('k',5);map.put('l',5);
        map.put('m',6);map.put('n',6);map.put('o',6);
        map.put('p',7);map.put('q',7);map.put('r',7);map.put('s',7);
        map.put('t',8);map.put('u',8);map.put('v',8);
        map.put('w',9);map.put('x',9);map.put('y',9);map.put('z',9);
        map.put('0',0);
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            char[] chars = in.nextLine().toCharArray();
            for (int i = 0; i < chars.length; i++) {
                //如果是大写先转换小写。
                if(Character.isUpperCase(chars[i])){
                    if(chars[i]=='Z'){
                        chars[i]='a';
                    }else{
                        char a  = (char) (chars[i] + 1);
                        chars[i]= Character.toLowerCase(a);
                    }
                }else if(Character.isLowerCase(chars[i])){
                    chars[i] = (char)(map.get(chars[i])+'0');
                }
            }
            System.out.println(new String(chars));
        }
    }
}

发表于 2023-06-03 16:57:13 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        // 定义正则表达式
        String num = ".*\\d.*";
        String upper = ".*[A-Z].*";
        String lower = ".*[a-z].*";
        String special = ".*[^a-zA-Z\\d]";
        StringBuffer sub = new StringBuffer();
        for (int i = 0; i < a.length(); i++) {
            String b = String.valueOf(a.charAt(i));
            //数字&nbs***bsp;特殊字符
            if (b.matches(num) || b.matches(special)) {
                sub.append(b);
            }
            //大写字母
            if (b.equals("Z")) {
                sub.append("a");
            }
            if (b.matches(upper) && !b.equals("Z")) {
                char c = (char) (a.charAt(i) + 1);
                String s = String.valueOf(c).toLowerCase();
                sub.append(s);
            }
            //小写字母
            if (b.matches(lower)) {
                String tt = "abc,def,ghi,jkl,mno,pqrs,tuv,wxyz";
                String[] sp = tt.split(",");
                for (int j = 0; j < sp.length; j++) {
                    if (sp[j].contains(b)) {
                        sub.append(j + 2);
                    }
                }
            }
        }
        System.out.println(sub);
    }
}

发表于 2023-05-23 11:20:55 回复(0)
Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.next();
            char[] chars = a.toCharArray();
            StringBuffer bf = new StringBuffer();
            for(int i=0;i<chars.length;i++){
                char c =chars[i];
                char cc = c;
                if(c>=65 && c<=90){
                    if(c>=65 && c<90){
                       cc= (char)(c+33);
                    }else{
                       cc= 'a';
                    }
                }else if(c>=97 && c<=122){
                    if(c=='a' || c=='b' ||c=='c'){
                        cc = '2';
                    }else if(c=='d' || c=='e' ||c=='f'){
                        cc = '3';
                    }else if(c=='g' || c=='h' ||c=='i'){
                        cc = '4';
                    }else if(c=='j' || c=='k' ||c=='l'){
                        cc = '5';
                    }else if(c=='m' || c=='n' ||c=='o'){
                        cc = '6';
                    }else if(c=='p' || c=='q' ||c=='r' ||c=='s'){
                        cc = '7';
                    }else if(c=='t' || c=='u' ||c=='v'){
                        cc = '8';
                    }else if(c=='w' ||c=='x' || c=='y' ||c=='z'){
                        cc = '9';
                    }
                }else{
                    cc =c;
                }
                bf.append(String.valueOf(cc));
            }
         
            System.out.println(bf.toString());
        }
发表于 2023-04-15 21:54:47 回复(0)
import java.util.Scanner;
//by -xiaxiaonan
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String strLib = "1-1 abc-2 def-3 ghi-4 jkl-5 mno-6 pqrs-7 tuv-8 wxyz-9 0-0"; //小写字母对应的数字库
        String str = in.next();
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) { 
            if (Character.isLowerCase(chars[i])) {    //处理小写字母
                int index = strLib.indexOf(chars[i]);//找到该小写字母在数字库中的索引
                while (!Character.isDigit(strLib.charAt(index))) {//数字库中往后寻找直到遇到第一个数字
                    index++;
                }
                chars[i] = strLib.charAt(index);
            }else if(Character.isUpperCase(chars[i])){ //处理大写字母
                int ch2 = Character.toLowerCase(chars[i]) + 1;
                if(ch2>122) {
                    chars[i] = 'a';
                }else{
                    chars[i] = (char)ch2;
                }
            }
        }
        System.out.print(new String(chars));
    }
}
发表于 2023-04-01 16:27:46 回复(0)
62个put方法
发表于 2023-03-27 21:39:14 回复(0)