【华为OJ】【020-简单密码】

【华为OJ】【算法总篇章】


【华为OJ】【020-简单密码】

【工程下载】


题目描述

密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。

假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,
这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,

声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,
如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

输入描述

输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾

输出描述

输出渊子真正的密文

输入例子

YUANzhi1987

输出例子

zvbo9441987

算法实现

import java.util.Scanner;

/**
 * Author: 王俊超
 * Date: 2015-12-23 10:39
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            String input = scanner.nextLine();
            System.out.println(encrypt(input));
        }

        scanner.close();
    }

    private static String encrypt(String input) {

        // 掩码表
        final char[][] mask = {
                {'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'},
                {'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a'}
        };

        char[] chars = input.toCharArray();

        for (int i = 0; i < chars.length; i++) {
            // 如果是小写字母,就要转变成数字符
            if (chars[i] >= 'a' && chars[i] <= 'z') {
                chars[i] = mask[0][chars[i] - 'a'];
            } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
                chars[i] = mask[1][chars[i] - 'A'];
            }
        }


        return new String(chars);
    }
}

你可能感兴趣的:(华为OJ,华为OJ)