用c++解一下这道题好吗

加密规则Alice有一段话要告诉Bob,为了防止被别人偷看,她需要加密这段话。加密的规则是把几个字母依次轮转置换,例如:规则是bcxy时,原文所有的b都变成c,所有的c都... 加密规则
Alice 有一段话要告诉 Bob,为了防止被别人偷看,她需要加密这段话。加密的规则是把
几个字母依次轮转置换,例如:规则是 bcxy 时,原文所有的 b 都变成 c,所有的 c 都变
成 x,所有的 x 都变成 y,所有的 y 都变成 b。没有提到的符号都保持原样。输入第一行
为原文,第二行为加密规则,规则中不会出现重复字符。输入最多 1000 个字符。输出一
行密文。
输入样例:
programming equals algorithms plus data structures
rmatgelus
输出样例:
pmoemtaaine lqstur tueomighar pusr dtgt rgmscgsmlr
展开
 我来答
丿艾瑞灬莉娅
2018-07-08 · TA获得超过916个赞
知道小有建树答主
回答量:926
采纳率:78%
帮助的人:431万
展开全部
#include <iostream>
#include <string>
#include <map>
using namespace std;

void getRule(const string& rule, map<char,char>& turn)
{
    int i;
    for(i = 0; i < rule.size()-1; ++i)
        turn.insert( make_pair(rule[i],rule[i+1]) );
    turn.insert( make_pair(rule[i],rule[0]) );
}

int main()
{
    string str;
    string rule;
    
    //  若输入数据只有一组把while去掉
    while( getline(cin, str) && getline(cin, rule) )
    {
        map<char, char> turn;
        getRule(rule, turn);
        for(int i = 0; i < str.size(); ++i)
        {
            char ch = str[i];
            auto it = turn.find(ch);
            if( it != turn.end() ){
                ch = it->second;
            }
            cout << ch;
        }
        cout << endl;
    }
    
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式