最难的问题(密文转原文)

题目描述:
NowCoder首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。
密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

输入描述:

输入包括多组数据,每组数据一行,为收到的密文。
密文仅有空格和大写字母组成。

输出描述:

对应每一组数据,输出解密后的明文。

输入

HELLO WORLD
SNHJ

输出

CZGGJ RJMGY
NICE

代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s,res;
    char* key="VWXYZABCDEFGHIJKLMNOPQRSTU";//key指针指向的是一段存放原文顺序的区域
    while(getline(cin,s))
    {
        res="";
        for(size_t i=0;i<s.size();i++)
        {   
            if(s[i]==' ')
            {
                res+=' ';
                continue;
            }
            res += key[s[i]-'A'];//测试用例给的密文顺序是A-Z,s[i]-'A'的差值对应原文顺序数组的下标        }
        cout<<res<<endl;
    }
}
发布了119 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/tangya3158613488/article/details/95209974