CCF 201509-3
思路简单,就是字符替换。如果没得满分,就是你代码的一些细节有问题。
#include <iostream>
#include <queue>
#include <stack>
#include <algorithm>
#include <math.h>
#include <map>
using namespace std;
vector<string> val;
map<string,string> M;
int main(){
int m,n;
cin >> m >> n;
getchar();
for(int i=0;i<m;i++){
string s;
getline(cin,s);
val.push_back(s);
}
for(int i=0;i<n;i++){
string s1,s2;
cin >> s1;
getline(cin, s2);
M[s1] = s2.substr(2, s2.length()-3);
// M[s1]=s2;
}
int p1=0,p2=0;
for(int i=0;i<m;i++){
while(val[i].find("{{ ",p1)!=val[i].npos){
p1=val[i].find("{{ ",p1);
p2=val[i].find(" }}",p1);
string ts=val[i].substr(p1+3,p2-p1-3);
val[i].replace(p1,ts.size()+6,M.count(ts)?M[ts]:"");
p1=p1+M.count(ts)?M[ts].size():0;
}
p1=0,p2=0;
}
for(int i=0;i<m;i++){
cout << val[i] << endl;
}
return 0;
}