题解 | #字符串加解密#

字符串加解密

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);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            char[] plain = in.next().toCharArray();
            char[] cipher = in.next().toCharArray();

            for (int i = 0; i < plain.length; i++) {
                char ch = plain[i];
                if (Character.isLetterOrDigit(ch)) {
                    if (Character.isLetter(ch)) {
                        if (Character.isLowerCase(ch)) {
                            // a-z
                            ch = Character.toTitleCase((char) (((ch - 'a') + 1) % 26 + 'a'));
                        } else {
                            // A-Z
                            ch = Character.toLowerCase((char) (((ch - 'A') + 1) % 26 + 'A'));
                        }
                    } else {
                        // 0-9
                        ch = (char) (((ch - '0') + 1) % 10 + '0');
                    }
                    plain[i] = ch;
                }
            }
            System.out.println(String.valueOf(plain));

            for (int i = 0; i < cipher.length; i++) {
                char ch = cipher[i];
                if (Character.isLetterOrDigit(ch)) {
                    if (Character.isLetter(ch)) {
                        if (Character.isLowerCase(ch)) {
                            // a-z
                            ch = Character.toTitleCase((char) (((ch - 'a') + 26 - 1) % 26 + 'a'));
                        } else {
                            // A-Z
                            ch = Character.toLowerCase((char) (((ch - 'A') + 26 - 1) % 26 + 'A'));
                        }
                    } else {
                        // 0-9
                        ch = (char) (((ch - '0') + 10 - 1) % 10 + '0');
                    }
                    cipher[i] = ch;
                }
            }
            System.out.println(String.valueOf(cipher));

        }
    }
}

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
12-03 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务