#include <iostream>
using namespace std;
#include <string>
#include <sstream>
#include <map>
#include <cctype>
int main() {
string str1;
string str2;
getline(cin, str1);
getline(cin, str2);
map<char, char> keyMap;
map<char, bool> wordMap;
istringstream is(str1);
char word;
char key;
int cnt = 0;
while (is >> word) {
if (wordMap.count(word) == 0) {
wordMap.insert(pair<char, bool>(word, true));
if (islower(word)) {
key = 'a' + cnt;
keyMap.insert(pair<char, char>(key, word));
word = toupper(word);
key = toupper(key);
keyMap.insert(pair<char, char>(key, word));
wordMap.insert(pair<char, bool>(word, true));
} else if (isupper(word)) {
key = 'A' + cnt;
keyMap.insert(pair<char, char>(key, word));
word = tolower(word);
key = tolower(key);
keyMap.insert(pair<char, char>(key, word));
wordMap.insert(pair<char, bool>(word, true));
}
cnt++;
}
}
for (int i = 0; i <= 25; i++) {
word = 'a' + i;
if (wordMap.count(word) == 0) {
key = 'a' + cnt;
wordMap.insert(pair<char, bool>(word, true));
keyMap.insert(pair<char, char>(key, word));
word = toupper(word);
key = toupper(key);
keyMap.insert(pair<char, char>(key, word));
wordMap.insert(pair<char, bool>(word, true));
cnt++;
}
}
for (int i = 0; i < str2.size(); i++) {
cout <<keyMap[str2[i]];
}
}
用两个图,一个图存曾经输入过的字母,另一个存字母密文的对应关系就行,记得把大小写都存进去

京公网安备 11010502036488号