首页 > 试题广场 >

字符串操作

[编程题]字符串操作
  • 热度指数:7526 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串

输入描述:
第一行两个数n,m
第二行一个字符串s
之后m行,每行两个数l r两个字符c1 c2


输出描述:
输出一行一个字符串
示例1

输入

5 3
wxhak
3 3 h x
1 5 x a
1 3 w g

输出

gaaak

说明

第一次修改后为wxxak
第二次修改后为waaak
第三次修改后为gaaak

备注:
对于100%的数据,有1<=n , m<=100
#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;
}

发表于 2025-01-08 09:18:27 回复(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;
}

发表于 2024-10-25 12:56:47 回复(0)
#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;
}
这边注意那个输入有问题,前面有个回车键
发表于 2024-06-16 19:34:50 回复(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;
}

编辑于 2024-04-04 23:11:23 回复(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;
}

编辑于 2024-02-13 18:30:22 回复(0)
#include <stdio.h>

int main() {
    int n,m=0;
    scanf("%d %d",&n,&m);
    char s[100]={0};
    scanf("%s",&s);
    int l,r=0;
    char c1,c2;
    for(int i=0;i<m;i++){
        scanf("%d %d %c %c",&l,&r,&c1,&c2);
        for(int j=l-1;j<r;j++){
            if(s[j]==c1){
                s[j]=c2;
            }
        }
    }
    printf("%s",s);
    return 0;
}

发表于 2024-02-11 19:14:40 回复(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;
}

编辑于 2024-01-02 23:52:49 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    int m = 0;
    int i = 0;
    char arr[100] = { 0 };
    int arr1[100] = { 0 };
    int arr3[100] = { 0 };
    char arr2[100] = { 0 };
    char arr4[100] = { 0 };
    scanf("%d%d", &n, &m);
    for (int i = 0; i <= n; i++)
    {
        scanf("%c", &arr[i]);
    }
    for (int i = 1; i <= m; i++)
    {
        getchar();
        scanf("%d%d %c %c", &arr1[i],&arr3[i], &arr2[i], &arr4[i]);
    }
    for ( int a = 0; a < m; a++)
    {
        for (int i = arr1[a + 1]; i <= arr3[a + 1]; i++)
        {
            if (arr[i] == arr2[a + 1])
            {
                arr[i] = arr4[a + 1];
            }
        }
    }
        for (int i = 1; i <= n; i++)
        {
            printf("%c", arr[i]);
        }
    return 0;
}
发表于 2023-11-23 18:36:42 回复(0)
#include <stdio.h>
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    getchar();//注意要把第一个输入的回车吃掉,不然后面没法运行
    char arr[100];
    gets(arr);
    int i,l,r;
    char c1,c2;
    for(i=0;i<m;i++)//趟数
    {
        scanf("%d %d %c %c",&l,&r,&c1,&c2);
        int j;
        for(j=l-1;j<r;j++)//识别并进行赋值
        {
            if(arr[j]==c1)
            {
                arr[j] = c2;
            }
        }
    }
    for(i=0;i<n;i++)//循环打印
    {
        printf("%c",arr[i]);
    }

    return 0;
}

发表于 2023-11-16 10:14:02 回复(1)
#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;
}

发表于 2022-08-09 16:33:35 回复(0)
#include<stdio.h>
int main() {
    int n, m, i,  a, b;
    char x,y;
    scanf("%d %d", &n, &m);
    char c[n];
    scanf("%s", &c);
    while (m!=0&&(scanf("%d %d %c %c", &a, &b, &x, &y) != EOF)) {
        for (i = a-1; i < b; i++) {
            if (c[i] == x) {
                c[i] = y;
            }
        }
        m--;
    }
    printf("%s", c);
}

发表于 2022-07-27 16:15:26 回复(0)
#include <stdio.h>
int main()
{
    int n,m,l,r;
    char c1, c2, s[100];
    scanf("%d %d", &n, &m);
    scanf("%s", s);
    while(scanf("%d %d %c %c", &l, &r, &c1, &c2)!=EOF)
    {
        for(int i=l-1; i<r; i++)
        {
            if(s[i]==c1)
                s[i] = c2;
        }
    }
    printf("%s", s);
    return 0;
}

发表于 2022-07-04 09:42:39 回复(1)
#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;
}

发表于 2022-06-15 00:57:50 回复(0)
#include<stdio.h>
int main()
{
    int n, m, i, j, l, r;
    char c1, c2;
    scanf("%d%d", &n, &m);
    getchar();
    char str[100] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%c", &str[i]);
    }
    getchar();
    for (j = 0; j < m; j++)
    {
        scanf("%d%d", &l, &r);
        getchar();
        scanf("%c", &c1);
        getchar();
        scanf("%c", &c2);
        for (i = l - 1; i <= r - 1; i++)
        {
            if (str[i] == c1)
                str[i] = c2;
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%c", str[i]);
    }
    return 0;
}

发表于 2022-05-01 20:12:17 回复(0)
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n=0,m=0;
    scanf("%d %d",&n,&m);
    char arr[n+1];
    scanf("%s",arr);
    int l=0,r=0;
    char c1=' ',c2=' ';
    while(scanf("%d %d %c %c",&l,&r,&c1,&c2)!=EOF)
    {
        for(int i=l-1;i<r;i++)
        {
            if(arr[i]==c1)
                arr[i]=c2;
        }
    }
    printf("%s",arr);
    return 0;
}

发表于 2022-03-09 22:36:51 回复(0)
#include<stdio.h>
int main(){
    int n,m,i,j;
    scanf("%d %d",&n,&m);
    char s[100];
    scanf("%s",s);
    int x,y;
    char a,b;
    for(i=0;i<m;i++){
        scanf(" %d %d %c %c",&x,&y,&a,&b);
        for(j=x-1;j<=y-1;j++){
            if(s[j]==a){
                s[j]=b;
            }
        }
    }
    for(i=0;i<n;i++){
        printf("%c",s[i]);
    }
}
发表于 2022-02-27 17:06:40 回复(1)