题解 | #字符串加解密#

字符串加解密

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

import java.util.*;
import java.util.regex.Pattern;

/*
对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足 1 \le n \le 1000 \1≤n≤1000  ,保证输入的字符串都是只由大小写字母或者数字组成
* */
public class Main{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            System.out.println(encryption(sc.nextLine()));
            System.out.println(decrypt(sc.nextLine()));
        }
    }
    //加密
    private static String encryption(String str){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Y') {
                sb.append((char) (str.charAt(i) + 1 + 32));
            } else if (str.charAt(i) == 'Z') {
                sb.append('a');
            } else if (str.charAt(i) >= 'a' && str.charAt(i) <= 'y') {
                sb.append((char) (str.charAt(i) + 1 - 32));
            } else if (str.charAt(i) == 'z') {
                sb.append('A');
            } else if (str.charAt(i) >= '0' && str.charAt(i) <= '8') {
                sb.append((char) (str.charAt(i) + 1));
            } else if (str.charAt(i) == '9') {
                sb.append('0');
            } else
                sb.append(str.charAt(i));
        }
            return String.valueOf(sb);
    }

    //解密
    private static String decrypt(String str){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 'B' && str.charAt(i) <= 'Z') {
                sb.append((char) (str.charAt(i) - 1 + 32));
            } else if (str.charAt(i) == 'A') {
                sb.append('z');
            } else if (str.charAt(i) >= 'b' && str.charAt(i) <= 'z') {
                sb.append((char) (str.charAt(i) - 1 + -32));
            } else if (str.charAt(i) == 'a') {
                sb.append('Z');
            } else if (str.charAt(i) >= '1' && str.charAt(i) <= '9') {
                sb.append((char) (str.charAt(i) - 1));
            } else if (str.charAt(i) == '0') {
                sb.append('9');
            } else
                sb.append(str.charAt(i));
        }
        return String.valueOf(sb);
    }
}
全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务