列表

详情


BC148. 字符串操作

描述

给定长度为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

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 272KB, 提交时间: 2022-03-15

#include<stdio.h>
#include<string.h>
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
     getchar();
    char a[n];
    for(int t=0;t<n;t++)
        scanf("%c",&a[t]);
    for(int t=0;t<m;t++)
    {
        int i,j;
    char c1,c2;
        scanf("%d %d %c %c",&i,&j,&c1,&c2);
            for(int k=i-1;k<=j-1;k++)
            {
                if(a[k]==c1)
                    a[k]=c2;
            }
    }
    for(int l=0;l<n;l++)
    printf("%c",a[l]);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 284KB, 提交时间: 2022-03-14

#include <stdio.h>
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    getchar();
    char str[100]={};
    for(int i=0;i<n;i++)
    {
        scanf("%c",&str[i]);
    }
    while(m--)
    {
        int a,b;
        char c,d;
        scanf("%d %d %c %c",&a,&b,&c,&d);
        for(int i=a-1;i<=b-1;i++)
        {
            if(str[i]==c) str[i]=d;
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%c",str[i]);
    }
    
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-08-03

#include <stdio.h>

int main() {
    int n, m, l, r;
    char s[1000] = {0}, c1, c2;
    scanf("%d %d\n%s", &n, &m, &s);
    for (int i = 0; i < m; i++) {  //根据m值进行循环
        scanf("%d %d %c %c\n", &l, &r, &c1, &c2);
        for (int j = l; j <= r; j++) {  //根据每次输入的l,r值进行循环
            if (s[j - 1] == c1) s[j - 1] = c2;  //根据c1,c2的值来进行修改
        }
    }
    printf("%s", s);  //输出最终结果
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-04-07

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

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-04-05

#include <stdio.h>

int main(void)
{
    int n, m;
    scanf("%d %d",&n,&m);
    char s[100];
    scanf(" %s",s);

    int l, r;
    char c1, c2;
    while(scanf(" %d %d %c %c",&l,&r,&c1,&c2)!=EOF){
        for(int i=l-1;i<=r-1;i++){
            if(s[i]==c1)
                s[i]=c2;
        }
    }

    printf("%s\n",s);
    return 0;
}

上一题