练习14,J题,字符串子操作

题目如下:

给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串

输入描述:

第一行两个数n,m

第二行一个字符串s

之后m行,每行两个数l r两个字符c1 c2

输出描述:

输出一行一个字符串

此题比较简单,

解答此问题,最好的方法是定义字符串,而不是字符数组,用字符数组此题可能会出现段错误,编译时输入字符串后无法输入的情况,用字符串大大解决该问题,但仍然要忽略掉空格(cin.ignore()),调用两层循环,以0为起点,如果找到了想要修改的范围直接调用if语句修改,代码如下:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m;
    cin >> n >> m;
    int l,r;
    char c1,c2;
    cin.ignore();
    string a;
    getline(cin,a);
    for(int i = 1;i <= m;i++)
    {
        cin >> l >> r >> c1 >> c2;
    for(int j = l-1;j <= r-1;j++)
    {
            if(a[j] == c1)
            {
                a[j] = c2;
            }
    }
    }
    cout << a << endl;
    return 0;
}

全部评论

相关推荐

头像
11-10 15:54
东北大学 Java
投递高德地图等公司10个岗位 > 你都收到了哪些公司的感谢信?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务