题目有一个长度为 n 的字符串 s,接下来进行 q 次操作,每次给出一个替换规则 x→y,表示把当前字符串中所有字符 x 都替换成字符 y。要求输出所有操作结束后的最终字符串。
一个很自然的想法是每次真的去修改整个字符串,但这样一次操作最坏要扫一遍字符串,总复杂度会达到 O(nq),显然无法通过。
这里要用到的核心算法思想是 映射维护。
由于字符串只由 26 个小写字母组成,我们不必真的反复修改整个字符串,只需要维护:
给你一个长度为n 的字符串 s,接下来会进行 q 次操作。每次操作会给出一个字符变换规则x→y,你需要将当前字符串里所有的字符 x 替换为字符 y。请你给出在完成所有操作后的字符串。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤10)代表数据组数,每组测试数据描述如下:
除此之外,保证单个测试文件的 n之和与 q 之和均不超过4×105。
对于每一组测试数据,新起一行输出一个字符串,表示最终的字符串。
输入
2
3 2
abc
a b
b c
5 1
abcde
a z
输出
ccc
zbcde
说明