华为机试在线训练_简单密码(字符串)
简单密码
http://www.nowcoder.com/questionTerminal/7960b5038a2142a18e27e4c733855dac
/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华
2020-03-15
简单密码
*/
#include<iostream>
using namespace std;
//密码(口令)变换的函数接口
string Password_Transformation(string str)
{
//字典法:考虑两个字典,一个是明文字典 a[],另一个是明文对应的加密字典 b[]。
//然后采用字典元素对应的方法,做加密或解密,实现方法为“字典下标对应索引以及元素匹配”。
char a[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}; //非必要的参照字典
char b[] = {"bcdefghijklmnopqrstuvwxyza222333444555666777788899990123456789"}; //字符输出对应字典
int len = str.size();
for (int i = 0; i < len; i++)
{
//小写字母转数字
if ((str[i] >= 'a') && (str[i] <= 'z'))
{
str[i] = b[str[i] - 'a' + 26];
}
//大写字母转小写
if ((str[i] >= 'A') && (str[i] <= 'Z'))
{
str[i] = b[str[i] - 'A'];
}
//数字不用转换,保持原样
}
return str;
}
//主函数
int main()
{
string str;
while (getline(cin,str))
{
cout << Password_Transformation(str) << endl;
}
return 0;
}
//笨方法:为每一种情况写一个 if 判别语句,对应输出结果即可,大厂面试 文章被收录于专栏
分享有用的面试经历,倾吐有心的面试感悟,讲述有趣的面试故事,以飨读者。 常用语言是C++,编程力求规范整洁,题解清晰完整,像写诗一样去写代码。 本专栏文章系「人工智能安全」(微信公众号)原创,转载请联系本文作者。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师,期待与你的思想交流碰撞出智慧的花火。