代码学习总结(四)
代码学习总结(四)
这个系列的博客是记录下自己学习代码的历程,有来自平台上的,有来自笔试题回忆的,主要基于 C++ 语言,包括题目内容,代码实现,思路,并会注明题目难度,保证代码运行结果
1 匹配密码
复杂
密码匹配
密码模板
给定一个标准格式的密码模板如下
0 对应
“# #”,
“# # #”,
“# # #”,
“# # #”,
“# #”
1 对应
“## ##”,
“## ##”,
“## ##”,
“## ##”,
“## ##”
2 对应
“# #”,
“### #”,
“# #”,
“### #”,
“# #”
3 对应
“# #”,
“### #”,
“# #”,
“### #”,
“# #”
4 对应
“# # #”,
“# # #”,
“# #”,
“### #”,
“### #”
5 对应
“# #”,
“# ###”,
“# #”,
“### #”,
“# #”
6 对应
“# #”,
“# ###”,
“# #”,
“# # #”,
“# #”
7 对应
“# #”,
“### #”,
“### #”,
“### #”,
“### #”
8 对应
“# #”,
“# # #”,
“# #”,
“# # #”,
“# #”
9 对应
“# #”,
“# # #”,
“# #”,
“### #”,
“### #”
输入一个数字 n n n ,并给出 n × 5 n \times 5 n×5 行密码,其中每 5 行为一段密码,需要与标准格式的密码模板进行匹配,但是实际中密码中空着的区域是用数字替代的,比如密码
“#222#”,
“#2###”,
“#232#”,
“###2#”,
“#272#”,
如果让计算机直接识别,那么这里的密码只会识别为 22222322272 ,但实际上,根据标准密码,它应该是数字 5
示例输入输出 1:
输入:
m = 1
“#222#”,
“#2###”,
“#232#”,
“###2#”,
“#272#”,
输出:‘5’
示例输入输出 2:
输入:
m = 2
“#567#”,
“###6#”,
“#893#”,
“###4#”,
“#567#”,
“#235#”,
“#2#5#”,
“#8#7#”,
“#888#”,
“#565#”
输出:‘3?’
思路解析:
- 首先根据标准密码构建模板库字典,把密码字符作为 key ,对应的数字作为 数字
- 根据 m 对输入进行分隔,然后把密码中所有不为 ‘#’ 的字符都替换为 ’ ’ 与模板中的保持一致
- 将修改后的输入作为 key 在字典中进行检索,如果没有结果,那么就输出 ‘?’ ,如果有结果就直接输出结果