用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 展开
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 展开
展开全部
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询