#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