zoukankan      html  css  js  c++  java
  • 华为OJ:字符串加解密

    题目描述

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

    2加密方法为:

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

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

    其他字符不做变化。

    3、解密方法为加密的逆过程。

    接口描述:

        实现接口,每个接口实现1个基本操作:

    void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出

    说明:

    1、字符串以结尾。

    2、字符串最长100个字符。

    int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出

    说明:

    1、字符串以结尾。

    2、字符串最长100个字符。

    输入描述:

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

    输出描述:

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

    输入例子:
    abcdefg
    BCDEFGH
    出例子:
    BCDEFGH
    abcdefg
    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            while(in.hasNext()){
                char[] enc = in.nextLine().toCharArray();
                char[] unEnc = in.nextLine().toCharArray();
                Encrypt(enc);
                System.out.println(charsToStr(enc));
                unEncrypt(unEnc);
                System.out.println(charsToStr(unEnc));
            }
        }
        private static void unEncrypt(char[] chars){
            for(int i=0;i<chars.length ;i++){
                if(isDigits(chars[i])){
                    if(chars[i] == '0'){
                        chars[i] = '9';
                    }else{
                        chars[i] = (char) (chars[i] - 1);
                    }
                }else if(isUpperCase(chars[i])){
                    if(chars[i] == 'A')
                        chars[i] = 'z';
                    else
                        chars[i] = (char) (chars[i] - 'A' + 'a' -1);
                }else if(isLowCase(chars[i])){
                    if(chars[i] == 'a')
                        chars[i] = 'Z';
                    else
                        chars[i] = (char) (chars[i] - 'a' + 'A' -1 );
                }
                
            }
        }
        
        private static void Encrypt(char[] str){
            for(int i=0;i<str.length ;i++){
                if(isDigits(str[i])){
                    if(str[i] == '9'){
                        str[i] = '0';
                    }else{
                        str[i] = (char) (str[i] + 1);
                    }
                }else if(isUpperCase(str[i])){
                    if(str[i] == 'Z')
                        str[i] = 'a';
                    else
                        str[i] = (char) (str[i] - 'A' + 'a' +1);
                }else if(isLowCase(str[i])){
                    if(str[i] == 'z')
                        str[i] = 'A';
                    else
                        str[i] = (char) (str[i] - 'a' + 'A' +1 );
                }
                
            }
        }
        private static String charsToStr(char[] chars){
            StringBuffer sb = new StringBuffer();
            for(char ch:chars){
                sb.append(ch);
            }
            return sb.toString();
        }
        
        private static boolean isDigits(char ch){
            if(ch >= '0' && ch<='9')
                return true;
            return false;
        }
        private static boolean isUpperCase(char ch){
            if(ch>='A' && ch<='Z')
                return true;
            return false;
        }
        private static boolean isLowCase(char ch){
            return ch>='a' && ch<='z';
        }
        private static boolean isWord(char ch){
            return isUpperCase(ch) || isLowCase(ch);
        }
    }
  • 相关阅读:
    vector容器(一)
    螺旋数组实现
    zigzag数组实现
    HDU 1496
    HDU 1381 Crazy Search
    什么叫软核,固核,硬核?
    “杜拉拉思维模式”之六:小组面试提升术
    硬件工程师电路设计必须紧记的十大要点
    面试的“群殴”宝典
    三段式状态机 [CPLD/FPGA]
  • 原文地址:https://www.cnblogs.com/theskulls/p/5727315.html
Copyright © 2011-2022 走看看