题目:
题解:
替换字母,找到最后的替换结果
#include <bits/stdc++.h>
using namespace std;
map<char,char> q;
int con[30];
int vis[1000005];
int main()
{
long long n,m;
cin>>n>>m;
string a;
cin>>a;
while(m--)
{
int r=0;
int f=0;
char x;
char y;
cin>>x>>y;
for(auto e:q)
{
if(e.second==x)
{
r=1;
q[e.first]=y;
}
else if(e.second==y)
{
f=1;
q[e.first]=x;
}
}
if(!r)
{
if(con[x-'a']==0)
{
q[x]=y;
con[x-'a']=1;
}
}
if(!f)
{
if(con[y-'a']==0)
{
q[y]=x;
con[y-'a']=1;
}
}
//for(auto e:q) cout<<e.first<<e.second<<endl;
}
for(auto x:q)
{
for(int i=0;i<n;i++)
{
if(a[i]==x.first&&vis[i]==0)
{
a[i]=x.second;
vis[i]=1;
}
}
}
cout<<a<<endl;
return 0;
}