本题包括:
1.简单的map使用
2.字符串简单处理
本题参考洛谷题解: https://www.luogu.com.cn/problem/solution/B3927
难度:普及-
对于笔者而言:
不会用map,在b站和csdn上搜map的使用方法,只能说是杂而乱
杂在于:介绍的种类方法多种多样,但是底下的使用方法寥寥无几,与开头的介绍有偏差
乱在于:找到的适用方法,黏贴下来或者按格式使用编译器会报错(不知道是缺少文件头还是我用的不对)
故:
写了这篇题解,是记录,也是希望对看过的你而言能有所帮助
1.简单的map使用
定义部分:
map<string,string>m
定义解析:
map:指定义的数据类型,和int类似
<string,string>:指定义的map里面的key和value的数据类型,其中key和value是一一对应的,key只存在唯一的value,value也只存在唯一的key,和查字典一样
m:指变量名
(ps:学过数据结构的同学应该会较好理解)
使用部分:
m.count(t)
使用解析:
m:指变量名
t:字符串t,为key
count():map方法,如果存在和key对应的value,则返回1,否则返回0,即作为判断给定的key在字典中是否存在
2.解题思路:
暴力!题目中给定的字符串长度不超过1000,最适合我们的暴力美学
暴力匹配:将每一段的key丢到字典中进行识别,如果存在答案就加上value,否则就加上”UNK"
3.AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
map<string,string>m;
int n;
cin>>n;
for(int i=1;i<=n;i++){
string a,b;
cin>>a>>b;
m[a]=b;
}
string s;
cin>>s;
s+='.';
string t="";
string ans;
for(int i=0;i<s.length();i++){
if(s[i]>='a'&&s[i]<='z') t+=s[i];
else{
if(m.count(t)){
ans+=m[t];
t="";
}
else if(t!=""){
//cout<<t<<endl;
ans+="UNK";
t="";
}
ans+=s[i];
}
}
for(int i=0;i<ans.length()-1;i++) cout<<ans[i];
}
如果大家有不懂的,或者文章有何不正,都欢迎评论留言进行讨论或者私信作者
标签:map,GESP202312,int,value,B3927,key,使用,白版,string From: https://blog.csdn.net/abeijixingdeye/article/details/136863196