题解 | #字符串加解密#

字符串加解密

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);
    }
}
全部评论

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
昨天 11:07
河南大学 Java
宇宙厂 测开 n*15
丘丘给个offer:有后选后
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务