深信服2020校招研发类笔试题 解密游戏

第二道笔试题没有完成,有些遗憾,在此补充记录一下。做的太认真就没有记题目什么的,那就靠回忆吧

Problem Description

大概是说一个解密游戏,A有密报和对应的译文,密报和译文都是以数字、大小写字母和下划线组成的,且一一对应。B在知道A的这段密报和对应的译文的基础上,另外截取了N段A的密报,求这些密报对应的译文。
输入:
一段密报
一段密文
N
N段密报
输出:
对应的N段译文,每段换行输出

Mentality

之前看过关联容器map和unordered_map,但是没有经常具体使用,一时间记不太清楚怎么使用了,笔试结束后,查阅了文档,是可以做出来的,所以思路没有问题。

遍历已知密报和译文,将映射关系放入map内,然后再输入N段新的密报,从map中找出对应的字符,再组合成译文。

Other Details

1.在STL的容器内部有11种通用容器,其中包括7种序列容器和4种关联容器。关联容器全部是key-value形式的数据结构:map、set、multimap、multiset。

set:值和键类型相同,且只能有唯一的值 [1,2,3]
multiset:值和键类型相同,值可以存在相同的 [1,1,2,2,3]
map:值和键类型可以不同,值只能与唯一的键关联 [[1,2],[2,3],[3,4]]
multimap:值和键类型可以不同,值可与多个键关联 [[1,2],[1,3],[3,4]]
摘自https://blog.csdn.net/weixin_39390393/article/details/89345412

2.使用map
map类头文件:
#include < map >

map为模板类,需要加两个参数:关键字和存储对象
map<int, string> student;
(定义一个用int作为索引,指针指向string)

map的简单构造
map<int, string> student;

map插入操作:
第一种 用insert和pair
student.insert(pair<int, string>(1, “abc”));
第二种 像数组一样用下标插入
student[2] = “def”;

map查找元素:
若关键字存在于map,则返回所在对象的位置,否则返回迭代器iterator,等于end函数的值。
auto iter = student.find(1);
if(iter != student.end())
cout<<“Find, the value is”<< iter ->second<<endl;
else
cout<<“Do not Find”<<endl;

3.string后追加char
一直被这个问题困扰,因为string的方法append要const char类型,但是从iterator上摘取的second的char类型怎么也转换不过去,后来发现可以直接用加号。(  ̄︿ ̄)

Code (C++)

#include<iostream>
#include<string>
#include<map>
using namespace std;
const int maxsize=10000;
/*
secret:截取的密报
ori:已知的原文
des:截取的信息的译文
*/
int main(){
	string secret, ori;
	int N;
	cin>>secret; 	cin>>ori;	cin>>N;
	
	map<char, char> reflex;//存放密报与原文的一一映射关系
	for (int i = 0; i < ori.size(); i++) {//循环遍历密报和原文,
		char temp = secret[i];//将两者映射关系一一写入reflex
		if (reflex.find(temp) == reflex.end())//若reflex内不存在该密报
			reflex[temp] = ori[i];//则写入reflex
	}

	for (int n = 0; n < N; n++) {//翻译密报
		string info;//存放截取的信息
		string des;//存放对应的译文
		cin>>info;
		int len = int(info.size());
		for (int i = 0; i < len; i++) {
			char temp = reflex.find(info[i])->second;
			des = des + temp;//string后追加char可以直接用加号
		}
		cout<<des<<endl;
	}
	return 0; 
}

题目提供的测试数据如下:
输入:
7T0MrxGRdyuEHnmQhJBFNcD5iKvloULPXYaAf14_CVw2ts6WS3qzIjpbkg8OZe9
XdHM40RnGgDyEYV3L7ciKrFm1Tj_UBJzw2leophQvP8NfIq9stZCaxAOWbk5uS6
1
pSlIlaAITFRylCARTfclftl2A3Xfc8lMIRIyA5AR3lSfaZ3FfRSlleIRytfcSlspMleABZcAlkAgldI3AXIEl4ISlgAARlaFS3ATlFRl34AlekdldIc3RAcll
输出:
As_a_leading_vendor_of_Network_Management_solutions__Sangfors_IAM_Secure_Web_Gateway_has_been_listed_in_the_SWG_Gartner__

在本地运行通过,欢迎指正批评(´▽`ʃ♡ƪ)

发布了19 篇原创文章 · 获赞 10 · 访问量 1201

猜你喜欢

转载自blog.csdn.net/qq_38655181/article/details/105234923