打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
华为机试HJ29: 字符串加解密

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

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

2、加密方法为:

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

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

其他字符不做变化。

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

本题含有多组样例输入。

输入描述:

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

输出描述:

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

示例:

输入:

abcdefg

BCDEFGH

输出:

BCDEFGH

abcdefg

解题思路:

这道题就是个标准的字符串处理题,我就写了两个函数分别进行加密解密,比较简单;还有用密码本的方式做也可以。

测试代码:

#include <iostream>
#include <string>
using namespace std;

string encryption(string password)
{
    string result;
    int size=password.size();
    for(int i=0;i<size;++i)
    {
        if(password[i]>='A'&&password[i]<='Y')
        {
            result+=password[i]+33;
        }
        else if(password[i]=='Z')
        {
            result+=97;
        }
        else if(password[i]>='a'&&password[i]<='y')
        {
            result+=password[i]-31;
        }
        else if(password[i]=='z')
        {
            result+=65;
        }
        else if(password[i]>='0'&&password[i]<='8')
        {
            result+=password[i]+1;
        }
        else if(password[i]=='9')
        {
            result+='0';
        }
        else{
            result+=password[i];
        }
    }
    return result;
}

string decrypt(string password)
{
    string result;
    int size=password.size();
    for(int i=0;i<size;++i)
    {
        if(password[i]>='B'&&password[i]<='Z')
        {
            result+=password[i]+31;
        }
        else if(password[i]=='A')
        {
            result+='z';
        }
        else if(password[i]>='b'&&password[i]<='z')
        {
            result+=password[i]-33;
        }
        else if(password[i]=='a')
        {
            result+='Z';
        }
        else if(password[i]>='1'&&password[i]<='9')
        {
            result+=password[i]-1;
        }
        else if(password[i]=='0')
        {
            result+='9';
        }
        else{
            result+=password[i];
        }
    }
    return result;
}

int main()
{
    string p1,p2;
    while(cin>>p1>>p2)
    {
        string r1=encryption(p1);
        string r2=decrypt(p2);
        cout<<r1<<endl<<r2<<endl;
    }
    
    return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
剑指offer之翻转单词顺序
leetcode394:字符串解码
截取指定长度html内容,并保留html格式标记(c#版)-程序开发-红黑联盟
将阿拉伯数字转换为汉字数字,支持到百万亿
Shell判断字符串包含关系
Python学习笔记 | 终止循环语句break和continue
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服