AcWing 3219. 模板生成系统
原题链接
中等
作者:
鲶鱼饭
,
2022-08-16 21:47:16
,
所有人可见
,
阅读 136
// 要考虑完全!
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<string , string> ma;
const int M = 110;
string s[M];
int main(){
int m , n;
cin >> m >> n;
getchar();
for(int i = 0; i < m; i ++ ){
getline(cin , s[i]);
}
for(int i = 0; i < n; i ++ ){
string s1 , s2 = "" , s3 = "";
getline(cin , s1);
int j = 0;
while(s1[j] != ' ') s2 += s1[j ++];
j += 2;
while(s1[j] != '"') s3 += s1[j ++];
ma[s2] = s3;
}
for(int i = 0; i < m; i ++ ){
for(int j = 0; j < s[i].size(); j ++ ){
string s1 = "";
bool flag = true;
if(s[i][j] == '{' && s[i][j + 1] == '{'){
int p = j;
j = j + 3;
while(s[i][j] != ' ') s1 += s[i][j ++];
if(s[i][j + 1] == '}' && s[i][j + 2] == '}'){
flag = false;
j = j + 2;
} else {
j = p;
}
}
if(!flag){
if(ma.count(s1)){
cout << ma[s1];
}
}
else cout << s[i][j];
}
cout << endl;
}
}