Java机试题:字符串加解密(大小写转化字符运算匹配)

描述

1、对输入的字符串进行加解密,并输出。

2、加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。   本题含有多组样例输入。   数据范围:输入的两个字符串长度满足 Java机试题:字符串加解密(大小写转化字符运算匹配) ,保证输入的字符串都是大小写字母或者数字

输入描述:

输入说明
输入一串要加密的密码
输入一串加过密的密码

输出描述:

输出说明
输出加密后的字符
输出解密后的字符

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            // 加密
            encode(str);    
            // 解密
            String str1 = sc.nextLine();
            decode(str1);    
        }    
    }

    private static void decode(String str) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            String temp = String.valueOf(str.charAt(i));
            if(temp.matches("[a-zA-Z]+")) {
                if(str.charAt(i) == 'A') {
                    sb.append('z');
                } else if(str.charAt(i) == 'a') {
                    sb.append('Z');
                } else {
                    char info = (char) (str.charAt(i) - 1);
                    if(String.valueOf(info).matches("[a-z]")) {
                        sb.append(String.valueOf(info).toUpperCase());
                    } else {
                        sb.append(String.valueOf(info).toLowerCase());
                    }
                }
            } else {
                if(str.charAt(i) == '0') {
                    sb.append('9');
                }  else {
                    char info = (char) (str.charAt(i) - 1);
                    sb.append(info);
                }
            }
        }
        System.out.println(sb.toString());    
    }
    
    private static void encode(String str) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            String temp = String.valueOf(str.charAt(i));
            if(temp.matches("[a-zA-Z]")) {
                if(str.charAt(i) == 'Z') {
                    sb.append('a');
                } else if(str.charAt(i) == 'z') {
                    sb.append('A');
                } else {
                    char info = (char) (str.charAt(i) + 1);
                    if(String.valueOf(info).matches("[a-z]")) {
                        sb.append(String.valueOf(info).toUpperCase());
                    } else {
                        sb.append(String.valueOf(info).toLowerCase());
                    }
                }
            } else {
                if(str.charAt(i) == '9') {
                    sb.append('0');
                }  else {
                    char info = (char) (str.charAt(i) + 1);
                    sb.append(info);
                }
            }
        }
        System.out.println(sb.toString());    
        
    }
    
}

题目来源:牛客网

上一篇:5. 最长回文子串_字符串_中等


下一篇:1496. 判断路径是否相交