#include <iostream>
#include <string>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
string s;
cin >> s;
while (m--) {
int l, r;
char c1, c2;
cin >> l >> r >> c1 >> c2;
l--;
r--;
size_t pos = l; // 关键1:将搜索的起始位置设置为区间的左边界 l
// 关键2:循环查找,且只在本轮指定的 [l, r] 区间内查找
while ((pos = s.find(c1, pos)) != string::npos && pos <= r) {
// 关键3:使用正确的replace函数重载,替换一个字符
s.replace(pos, 1, 1, c2); // 用1个c2字符,替换从pos开始的1个字符
pos++; // 关键4:替换后,将位置后移一位,避免重复检查刚替换的位置(防止死循环)
}
}
cout << s << endl;
}
使用replace

京公网安备 11010502036488号