练习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; }