题解 | #字符串加解密#

字符串加解密

https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int size = 26;
        int nSize = 10;
        char[] lowArray = new char[size];
        char[] upArray = new char[size];
        char[]numArray = new char[nSize];
        char l = 'a';
        char u = 'A';
        char o = '0';
        for (int i = 0; i < 26; i++) {
            lowArray[i] = l++;
            upArray[i] = u++;
            if (i < nSize) {
                numArray[i] = o++;
            }
        }
        while (in.hasNext()) {
            String code = in.nextLine();
            String decode = in.nextLine();

            //加密
            char[] codeArray = code.toCharArray();
            StringBuilder sb = new StringBuilder(code.length());
            for (char c : codeArray) {
                if ('a' <= c && c <= 'z') {
                    int index = c - 'a' + 1;//后移一位
                    char t = upArray[index % size];
                    sb.append(t);
                    continue;
                }
                if ('A' <= c && c <= 'Z') {
                    int index = c - 'A' + 1;//后移一位
                    char t = lowArray[index % size];
                    sb.append(t);
                    continue;
                }
                if ('0' <= c && c <= '9') {
                    int index = c - '0' + 1;
                    char t = numArray[index % nSize];
                    sb.append(t);
                    continue;
                }
                sb.append(c);
            }
            System.out.println(sb.toString());

            //解密
            char[] decodeArray = decode.toCharArray();
            StringBuilder sb2 = new StringBuilder(decode.length());
            for (char c : decodeArray) {
                if ('a' <= c && c <= 'z') {
                    int index = c - 'a' + size -1; //前移一位 避免负值 统一 +size 再取模
                    char t = upArray[index % size];
                    sb2.append(t);
                    continue;
                }
                if ('A' <= c && c <= 'Z') {
                    int index = c - 'A' + size - 1; //前移一位
                    char t = lowArray[index % size];
                    sb2.append(t);
                    continue;
                }
                if ('0' <= c && c <= '9') {
                    int index = c - '0' + nSize - 1;
                    char t = numArray[index % nSize];
                    sb2.append(t);
                    continue;
                }
                sb2.append(c);
            }
            System.out.println(sb2.toString());
        }
    }
}

全部评论

相关推荐

老板加个卤鸡蛋:HR看了以为来卧底来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24476次浏览 480人参与
# 中国电信笔试 #
31011次浏览 283人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14048次浏览 209人参与
# 你的实习产出是真实的还是包装的? #
18635次浏览 329人参与
# 如果秋招能重来,我会____ #
96616次浏览 500人参与
# 春招至今,你的战绩如何? #
59439次浏览 535人参与
# 米连集团26产品管培生项目 #
12919次浏览 285人参与
# i人适合做什么工作 #
36838次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79444次浏览 219人参与
# 哪些公司真双非友好? #
69176次浏览 287人参与
# 找AI工作可以去哪些公司? #
7561次浏览 179人参与
# 从事AI岗需要掌握哪些技术栈? #
7528次浏览 238人参与
# 面试尴尬现场 #
220729次浏览 861人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339792次浏览 2163人参与
# 五一之后,实习真的很难找吗? #
102792次浏览 584人参与
# 金三银四,你的春招进行到哪个阶段了? #
21492次浏览 275人参与
# 你做过最难的笔试是哪家公司 #
29736次浏览 182人参与
# 你小时候最想从事什么职业 #
159832次浏览 2072人参与
# 阿里笔试 #
176137次浏览 1300人参与
# 应届生第一份工资要多少合适 #
20463次浏览 84人参与
# 一张图晒出你司的标语 #
3784次浏览 71人参与
# 面试被问期望薪资时该如何回答 #
382445次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务