题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <iostream> #include <unordered_set> using namespace std; int main() { string old_alphabet = "abcdefghijklmnopqrstuvwxyz"; string new_alphabet, key, plain, cipher;//分别表示新字母表、密钥、明文、密文 cin >> key >> plain; //删除密钥中重复的字符 unordered_set<char> Set; for(int i = 0; i < key.length(); i++){ for(int j = 0; j < old_alphabet.length(); j++){//从旧字母表中删除密钥中已有的字符 if(old_alphabet[j] == key[i]){ old_alphabet.erase(j, 1); break; } } if(Set.count(key[i]) != 0){ key.erase(i--, 1); } Set.insert(key[i]); } //组合新字母表 new_alphabet = key + old_alphabet; for(int i = 0; i < plain.length(); i++){ cipher += new_alphabet[plain[i] - 'a']; } cout << cipher << endl; return 0; }