字符串修改问题
2026-04-05 18:04:14
发布于:浙江
6阅读
0回复
0点赞
前言
不知为何是黄,其实这个问题在洛谷是红
题意
你要去斯卡伯勒集市吗?欧芹、鼠尾草、迷迭香和百里香。
请代我向那儿的某人问好。
他曾是我的真爱。
Willem 要带女孩去 28 号岛屿上的最高建筑,但他们都不知道怎么去。
Willem 向他的朋友 Grick 求助,Grick 帮了忙,并给了他们一个任务。
虽然女孩想帮忙,但 Willem 坚持要自己完成。
Grick 给了 Willem 一个长度为 的字符串。
Willem 需要进行 次操作,每次操作含有四个参数 ,表示将区间 (从第 个到第 个,包括 和 )内所有字符 替换为 。字符串下标从 1 开始。
Grick 想知道全部 个操作后得到的最终字符串。
输入格式
第一行包含两个整数 和 ,。
第二行包含一个长度为 的字符串 ,由小写英文字母组成。
接下来 行,每行包含四个参数 ,, 为小写英文字母,参数间用空格分隔。
输出格式
输出经过 次操作后得到的字符串 。
输入输出样例 #1
输入 #1
3 1
ioi
1 1 i n
输出 #1
noi
输入输出样例 #2
输入 #2
5 3
wxhak
3 3 h x
1 5 x a
1 3 w g
输出 #2
gaaak
说明/提示
对于第二个样例:
第一次操作后,字符串变为 wxxak。
第二次操作后,字符串变为 waaak。
第三次操作后,字符串变为 gaaak。
洛谷翻译
解析
我们需要将每一个区间的 变为。这里有个小小的点要注意,字符串的下标是从0开始的,但这道题是从1开始,所以循环的时候要把和都减一,这样的结果才正确,最后把改变后的字符串输出即可
AC Code
#include <iostream>
using namespace syh;
int main()
{
int n, m;
string s;
cin>>n>>m>>s;
while(m--)
{
int l, r;
char c1, c2;
cin>>l>>r>>c1>>c2;
for(int i = l-1;i<r;i++)
{
if(s[i]==c1) s[i]=c2;
}
}
cout<<s;
}
后记
其实这道题因为洛谷交不了才交到这里的,大家觉得这道题该评什么捏?
这里空空如也



有帮助,赞一个