题面
做法:模拟
我们先定义三个char数组:
a -> 小 C掌握的一条加密信息
b -> 加密信息所对应的原信息
c -> R国司令部要求小C翻译的加密信息
具体做法:
- 读入(不讲)
- 一个特判:若输入a数组长度<=26,直接输出“Failed”,因为题目要求必须26个字母都需要有对应的字母
- for循环将a数组字符通过map映射与b数组对应字符建立联系,同时加一重判定,检查当前字符是否之前用过,字符是否与不同字符建立联系
- for循环查看26个字母是否都被赋值
- for循环将c数组字符对应到b数组并输出
return 0
总时间复杂度:O(len(a+c))
具体见代码:
#include <bits/stdc++.h>
const int N = 100010; //题中没有要求,可自己随意开,但尽量开大些
using namespace std;
char a[N], b[N], c[N];
map <char, char> m;
map <char, char> check;
int main () {
scanf ("%s%s%s", a, b, c);
int len = strlen (a);
if (len < 26) {
cout << "Failed" << endl;
return 0;
}
for (int i = 0; i < len; i++) {
if (check[b[i