题意
给你n个字符串,每个字符串会代表一个数。
接下来,会有m个句子。
每个句子之中会有
{
}
\{\}
{} 括着的字符串。字符串一定是上面出现过的。要你用数字代替字符串。
思路
我们可以用
m
a
p
map
map储存字符串代表的数字。
对于给定的句子,寻找两个括号,取出括号内的字符串,并查
m
a
p
map
map替换为数字。
代码
#include<bits/stdc++.h>
#include<cstring>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#include<map>
#define ll long long
using namespace std;
const int N=1e5+10;
const int M=2023;
const int inf=0x3f3f3f3f;
int n,k,pp;
map<string,int> mp;
string a;
string dfs(int pos,int end)
{
string x;
for(int i=pos+1;i<end;i++)
{
if(a[i]=='}')
{
pos=i;
pp=i;
return x;
}
x+=a[i];
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
string x;
int y;
cin>>x>>y;
mp[x]=y;
}
for(int i=1;i<=k+1;i++)
{
getline(cin,a);
if(i==1)continue;
for(int j=0;j<a.size();j++)
{
if(a[j]=='{')
{
cout<<mp[dfs(j,a.size())];
j=pp;
}
if(a[j]!='}')cout<<a[j];
}
cout<<"\n";
}
return 0;
}
AC记录;