自己ide跑无问题,与对应输出一致,但是测评显示有错
用例:
qrwevoifsrnaxhsuc
epvjrscrnsflxxzchappqjc
对应输出应该为:
vbmngjwgujoxttzwfqbbdnw
你的输出为:
anuhqrfqlrbjxxzfewnnphf
代码:
#include<iostream> #include<string> #include<vector> using namespace std; int main() { int flag[28]={0}; string key; string data; while (cin >> key) { cin >> data; string tmp = ""; for (int i = 0; i < key.size(); i++) { char c = toupper(key[i]); if (!flag[c - 'A']) { tmp += c; flag[c - 'A'] = 1; } } //生成映射表,A-Z按照顺序如果不在tmp里面那就加载后面 for (int i = 'A'; i <= 'Z'; i++) { if (tmp.find(i) == string::npos) { tmp += i; } } //处理data string ans = ""; for (int i = 0; i < data.size(); i++) { if (isupper(data[i])) { ans += tmp[data[i] - 'A']; } else { char d = toupper(data[i]); ans += tolower(tmp[d - 'A']); } } cout << ans << endl; } return 0; }