题解 | #字符串加解密#

字符串加解密

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    // 加密方法
    public static String encrypt(String input) {
        StringBuilder encrypted = new StringBuilder();

        for (char ch : input.toCharArray()) {
            if (Character.isLetter(ch)) {
                // 处理字母
                if (Character.isLowerCase(ch)) {
                    // 小写字母,转成对应的大写字母的下一个字母
                    encrypted.append(ch == 'z' ? 'A' : (char)(ch + 1) == 'a' ? 'B' : (char)Character.toUpperCase(ch + 1));
                } else {
                    // 大写字母,转成对应的小写字母的下一个字母
                    encrypted.append(ch == 'Z' ? 'a' : (char)(ch + 1) == 'A' ? 'b' : (char)Character.toLowerCase(ch + 1));
                }
            } else if (Character.isDigit(ch)) {
                // 处理数字
                encrypted.append((ch - '0' + 1) % 10);
            } else {
                // 非字母和数字的字符原样添加
                encrypted.append(ch);
            }
        }
        return encrypted.toString();
    }

    // 解密方法
    public static String decrypt(String input) {
        StringBuilder decrypted = new StringBuilder();

        for (char ch : input.toCharArray()) {
            if (Character.isLetter(ch)) {
                // 处理字母
                if (Character.isLowerCase(ch)) {
                    // 小写字母,解密为大写字母的前一个字母
                    decrypted.append(ch == 'a' ? 'Z' : (char)(ch - 1) == 'z' ? 'A' : (char)Character.toUpperCase(ch - 1));
                } else {
                    // 大写字母,解密为小写字母的前一个字母
                    decrypted.append(ch == 'A' ? 'z' : (char)(ch - 1) == 'Z' ? 'a' : (char)Character.toLowerCase(ch - 1));
                }
            } else if (Character.isDigit(ch)) {
                // 处理数字
                decrypted.append((ch - '0' - 1 + 10) % 10);
            } else {
                // 非字母和数字的字符原样添加
                decrypted.append(ch);
            }
        }
        return decrypted.toString();
    }


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            String b = in.nextLine();
            System.out.println(encrypt(a));
            System.out.println(decrypt(b));
        }
    }
}

#刷题我是认真的#
全部评论

相关推荐

07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 13:36
点赞 评论 收藏
分享
码砖:求职岗位要突出,一眼就能看到,教育背景放到最后,学校经历没那么重要,项目要重点突出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务