在一行输入两个整数
![]()
。
接下来一行输入一个只含小写字母的字符串
,长度为
。
再接下来
行,每行输入两个整数
和两个字符
,用空格分隔,其中
,
为小写字母。
输出一个只含小写字母的字符串,表示执行完所有操作后的最终字符串。
5 3 wxhak 3 3 h x 1 5 x a 1 3 w g
gaaak
初始字符串为 `wxhak`;
第 1 次操作将位置 3 上的 `h` 替换为 `x`,得到 `wxxak`;
第 2 次操作将位置 1 至 5 的 `x` 替换为 `a`,得到 `waaak`;
第 3 次操作将位置 1 至 3 的 `w` 替换为 `g`,得到 `gaaak`。
#include <stdio.h> int main(){ int n, count, l, r; char a, b, arr[100];; scanf("%d %d", &n, &count); scanf("%s", arr); while(count--){ scanf("%d %d %c %c", &l, &r, &a, &b); for(int i = l-1; i <= r-1; i++){ if(arr[i] == a) arr[i] = b; } } printf("%s", arr); return 0; }
#include<stdio.h> int main() { int n, m, l, r; scanf("%d %d", &n, &m); char str[100] = {0}, c1, c2; scanf("%s", str); while (m--) { scanf("%d %d %c %c", &l, &r, &c1, &c2); for (int j = l - 1; j <= r - 1; j++) if (str[j] == c1) str[j] = c2; } printf("%s\n", str); return 0; }
#include <bits/stdc++.h> using namespace std; int main() { int n, m, l, r; string s; cin >> n >> m >> s; char c1, c2; for (int i = 0; i < m; ++i) { cin >> l >> r >> c1 >> c2; for (int j = l - 1; j <= r - 1; ++j) { if (s[j] == c1) s[j] = c2; } } cout << s << endl; return 0; }
n,m = map(int,('5 3'.split())) s = 'wxhak' #字符串 p = [] for i in s: p.append(i) #把字符串放到列表里面 # print(m) for j in range(m): u = [] a,b,c,d = input().split() e = p[int(a)-1:int(b)] # print(e) for q in e: if q ==c: q = d u.append(q) else: u.append(q) # print(q) # print(u) u.reverse() # print(u) del p[int(a)-1:int(b)] # print(p) for i in u: p.insert(int(a)-1, i) for i in p: print(i,end='')
#include <stdio.h> #include <string.h> int main() { int n,m; scanf("%d %d\n",&n,&m); char str[n]; for(int i=0;i<n;i++){ scanf("%c",&str[i]); //scanf("%s",&str);这里这样写就会报错,看了调试字符串并没有被str完整接收 } int l,r; char c1,c2; while(m--){ scanf("%d %d %c %c\n",&l,&r,&c1,&c2); for(int i=l-1;i<r;i++){ if(str[i]==c1){ str[i]=c2; } } } for(int i=0;i<n;i++){ printf("%c",str[i]); } //printf("%s",str);有些案例能通过,但是特别长的那个多打印了奇怪的符号 return 0; }
#include<stdio.h> #include <string.h> int main() { int n = 0; int m = 0; char ch[100]; int l = 0; int r = 0; char c1 = 0; char c2 = 0; scanf("%d %d\n",&n,&m); scanf("%s",ch); int i = 0; int j = 0; for(i=0;i<m;i++) { scanf("%d %d %c %c\n",&l,&r,&c1,&c2); for(j=l-1;j<=r-1;j++) { if(ch[j]==c1) { ch[j]=c2; } } } int k = 0; for(k=0;k<n;k++) { printf("%c",ch[k]); } return 0; }
#include <stdio.h> int main() { int chang, ci,zi1,zi2;char zifu[200]={},th1,th2; //获取长度和字符串 scanf("%d%d",&chang,&ci); getchar(); scanf("%s",zifu); //获取字符范围与需交换字符值 for (int y=0; y<ci; y++) { scanf("%d%d %c %c",&zi1,&zi2,&th1,&th2); for (int x=zi1; x<=zi2; x++) { if (zifu[x-1]==th1) { zifu[x-1]=th2; } } } //输出操作玩的字符串 printf("%s",zifu); return 0; }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(), m = in.nextInt(); in.nextLine(); StringBuilder str = new StringBuilder( in.nextLine()); //stringbuilder 可修改的字符串 for (int i = 0; i < m; i++) { int l = in.nextInt(), r = in.nextInt(); char c1 = in.next().charAt(0), c2 = in.next().charAt(0); //替换和修改的字符 for (int j = l - 1; j < r; j++) { if (str.charAt(j) == c1) { str.setCharAt(j, c2); //重置该位置的字符 } } } System.out.println(str); } }
#include <stdio.h> #include <string.h> int main() { int n = 0; int m = 0; scanf("%d %d", &n, &m); char str[100]; // for(int i = 0; i<n; ++i) // { // scanf(" %c", &str[i]); // } getchar(); gets(str); for(int i = 0; i<m; ++i) { int p, q; char c1, c2; scanf("%d %d %c %c", &p, &q, &c1, &c2); for(int j = p; j<=q; ++j) { if(str[j-1] == c1) { str[j-1] = c2; } } } // for(int i = 0; i<n; ++i) // { // printf("%c", str[i]); // } puts(str); return 0; }这边注意那个输入有问题,前面有个回车键
#include <stdio.h> #include <stdlib.h> int main() { int n , m, r, l; char c1, c2; int i = 0; char* p = NULL; scanf("%d%d", &n, &m); p = (char*)malloc(sizeof(char) * (n + 1)); if(!p) { perror("malloc fail!"); return 1; } scanf("%s", p); //进行m次后续操作 for(i = 0; i < m; i++) { scanf("%d%d %c %c", &r, &l, &c1, &c2); //查找r到l中的c1 while(r <= l) { //找到了,进行交换 if(*(p + r - 1) == c1) { *(p + r - 1) = c2; } r++; } } printf("%s\n", p); free(p); p = NULL; return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int n = 0, m = 0, l = 0, r = 0; cin >> n >> m; char* s = (char*)malloc(n * sizeof(char)); char c1, c2; cin>>s; for (int i = 0; i < m; i++) { cin >> l >> r >> c1 >> c2; for (int j = l - 1; j < r; j++) { if (s[j] == c1) { s[j] = c2; } } } cout<<s<<endl; return 0; }
#include <stdio.h> int main() { int n, m; scanf("%d %d", &n, &m); char arr[n+1]; for(int i=1; i<=n; i++){ scanf(" %c", &arr[i]); } for(int i=0; i<m; i++){ int p, q; char a, b; scanf("%d %d %c %c", &p, &q, &a, &b); for(int j=p; j<=q; j++){ if(arr[j] == a){ arr[j] = b; } } } for(int i=1; i<=n; i++){ printf("%c", arr[i]); } return 0; }
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 0;//字符串的长度 int m = 0;//进行m 次 操作 scanf("%d %d", &n, &m); getchar();//吸收换行符 char s[101] = { 0 }; //向数组中输入字符串 for (int i = 1; i <= n; i++) { scanf("%c", &s[i]); } for (int i = 1; i <= m; i++) { int l = 0; int r = 0;//左右范围 char c1 = 0; char c2 = 0;//将 c1 字符 改为 c2 字符 scanf("%d %d\n%c\n%c", &l, &r, &c1, &c2);//注意吸收换行符 //遍历 左右 区间内的 字符 并进行更改 for (int j = l; j <= r; j++) { if (s[j] == c1) { s[j] = c2; } } } //输出 for (int i = 1; i <= n; i++) { printf("%c", s[i]); } return 0; }
#include <stdio.h> int main() { //n决定字符串长度,m决定替换次数 int n, m; //字符串 char s[100]; //判断范围 int l,r; //当l到r的范围内有满足c1的则替换成c2 char c1, c2; //输入字符串长度,替换次数 scanf("%d %d",&n,&m); getchar(); //获取字符串内容 for(int i = 0;i<n;i++) { scanf("%c",&s[i]); } //替换次数 for(int j=0;j<m;j++) { //获取范围 scanf("%d %d",&l,&r); //获取c1 getchar(); scanf("%c",&c1); //获取c2 getchar(); scanf("%c",&c2); getchar(); //对l到r范围内等于c1的替换成c2 for(int i = l-1;i<r;i++) { if(s[i]==c1) { s[i]=c2; } } } //打印 for(int i=0;i<n;i++) { printf("%c",s[i]); } return 0; }
package main import ( "fmt" ) func main() { var n,m int fmt.Scan(&n,&m) bytes := make([]byte, n) for i:=0;i<n;i++{ fmt.Scanf("%c", &bytes[i]) } // 读掉字符串的 \n fmt.Scanf("\n") for i:=0;i<m;i++{ var l,r int var c1,c2 byte fmt.Scanf("%d %d %c %c\n",&l,&r,&c1,&c2) for i:=l-1;i<=r-1;i++{ if bytes[i] == c1 { bytes[i] = c2 } } } for i:=0;i<n;i++{ fmt.Printf("%c", bytes[i]) } }
#include <stdio.h> int main() { int m,n; char arr[200]={0}; scanf("%d %d",&n,&m); scanf("%s",arr); for(int j=0;j<m;j++) { int l,r; char c1,c2; scanf("%d %d %c %c",&l,&r,&c1,&c2); for(int i=l-1;i<r;i++) { if(arr[i]==c1) { arr[i]=c2; } } } printf("%s",arr); return 0; }