当前位置: 首页 > article >正文

HJ29 字符串加解密

描述

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

加密方法为: 

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

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

其他字符不做变化。 

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

数据范围:输入的两个字符串长度满足 1≤n≤1000 1≤n≤1000  ,保证输入的字符串都是只由大小写字母或者数字组成

输入描述:

第一行输入一串要加密的密码
第二行输入一串加过密的密码

输出描述:

第一行输出加密后的字符
第二行输出解密后的字符

示例1

输入:

abcdefg
BCDEFGH

复制输出:

BCDEFGH
abcdefg
#include <ios>
#include <iostream>
using namespace std;
string encryption(string str){
    //加密
    for(int i=0;i<str.size();i++){
        if(str[i]>='a'&&str[i]<='z'){
            if(str[i]=='z')str[i]='A';
            else{
                str[i]=str[i]-32+1;
            }
        }else  if(str[i]>='A'&&str[i]<='Z'){
            if(str[i]=='Z')str[i]='a';
            else{
                str[i]=str[i]+32+1;
            }
        }else if(str[i]>='0'&&str[i]<='9'){
            if(str[i]=='9')str[i]='0';
            else {
                str[i]=(char)((int)str[i]+1);
            }
        }
    }
    return str;
}
string decode(string str){
    for(int j=0;j<str.size();j++){
        if(str[j]>='a'&&str[j]<='z'){
            if(str[j]=='a')str[j]='Z';
            else{
                str[j]=str[j]-32-1;
            }
        }else if(str[j]>='A'&&str[j]<='Z'){
            if(str[j]=='A')str[j]='z';
            else{
                str[j]=str[j]-1+32;
            }
        }else if(str[j]>='0'&&str[j]<='9'){
            if(str[j]=='0')str[j]='9';
            else{
                str[j]=(char)((int)(str[j])-1);
            }
        }
    }
    return str;
}
int main() {
  string str1;
  string str2;
  while(cin>>str1>>str2){
    cout<<encryption(str1)<<endl;
    cout<<decode(str2)<<endl;

  }
  return 0;
}
// 64 位输出请用 printf("%lld")

 


http://www.kler.cn/a/37543.html

相关文章:

  • 数据结构--栈
  • 2023年Java最新面试题
  • C/C++实现高并发http服务器
  • 设计模式之建造者设计模式
  • 给大模型穹顶,树一根存力支柱
  • 【吴恩达】prompt engineering(原则 迭代 文本概括 推断、订餐机器人)
  • MQHelperFactory
  • STM32 Proteus仿真全自动洗衣机洗涤脱水-0074
  • Java设计模式之行为型-状态模式(UML类图+案例分析)
  • “深入剖析Redis的数据结构与性能优化策略“
  • 华为战略方法论:BLM模型之战略意图(限制版)
  • 简要介绍 | 心脏机械-电耦合理论:原理、研究现状与未来展望
  • win10查看、关闭和开启多个mysql服务
  • 【ELK企业级日志分析系统】安装与部署ELK详解
  • 35 用户虚拟地址空间的 堆栈区间初始化
  • 【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 6 日论文合集)
  • 基础篇--STM32原理图设计
  • 网络通信原理系统的认知(NEBASE第十四课)
  • 使用OpenCV DNN推理YOLOv5-CLS转换后的ONNX分类模型
  • C++学习之static关键字小结