我在 CS106L 中做关于 STL 算法的练习,其中一个问题是关于使用 random_shuffle 进行替换加密。
问题是使用 random_shuffle 实现一个函数 MonoalphabeticSubstitutionEncrypt,它接受一个源字符串并用随机的 Monoalphabetic Substitution Cipher 对其进行加密。
这意味着一开始我有“AB..XYZ”,只是将 random_shuffle 调用到 AZ 并生成类似“KVDQ...MSB”的内容,然后进行加密原始字符串的映射。
我可以使用映射来完成,但应该只使用那些 STL 算法来完成。
有人有想法吗?谢谢!
我是这样做的,但似乎我没有使用 STL 算法的力量
string MonoSubsitutionEncrypt(string line){
string original = "abcdefghijklmnopqrstuvwxyz";
string excrypt = original;
random_shuffle(encrypt.begin(), encrypt.end());
map<char, char> m;
for (int i = 0;i < original.length(); i++)
m.insert(make_pair(original[i],encrypt[i]));
string result;
for (int i = 0; i < line.length(); i++)
result += m[line[i]];
return result;
}