列表

详情


CMB16. 推倒吧骨牌

描述

输入描述

输入为一个长度不超过1000的,仅包含‘L’,‘R’,‘.’的字符串

输出描述

根据输入,输出一个仅由‘L’,‘R’,‘.’组成的结果字符串

示例1

输入:

.L.R...LR....L.

输出:

LL.RR.LLRRRLLL.

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-05-20

#include<stdio.h>
#include<string.h>
int main()
{
    char d[1001];
    scanf("%s",d);
    int len = strlen(d);
    int force=0;
    int forces[1000]={0};
    for(int i=0;i<len;++i)
    {
        if(d[i]=='R')
            force=len;
        else if(d[i]=='L')
            force=0;
        else
            force=(force-1)>0?(force-1):0;
        forces[i]+=force;
    }
    force=0;
    for(int i=len-1;i>=0;--i)
    {
        if(d[i]=='L')
            force=len;
        else if(d[i]=='R')
            force=0;
        else
            force=(force-1)>0?(force-1):0;
        forces[i]-=force;
    }
    for(int i=0;i<len;++i)
    {
        if(forces[i]<0)
            printf("L");
        else if(forces[i]>0)
            printf("R");
        else
            printf(".");
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-18

#include<stdio.h>
#include<string.h>
int main()
{
    char d[1001];
    scanf("%s",d);
    int len = strlen(d);
    int force=0;
    int forces[1000]={0};
    for(int i=0;i<len;++i)
    {
        if(d[i]=='R')
            force=len;
        else if(d[i]=='L')
            force=0;
        else
            force=(force-1)>0?(force-1):0;
        forces[i]+=force;
    }
    force=0;
    for(int i=len-1;i>=0;--i)
    {
        if(d[i]=='L')
            force=len;
        else if(d[i]=='R')
            force=0;
        else
            force=(force-1)>0?(force-1):0;
        forces[i]-=force;
    }
    for(int i=0;i<len;++i)
    {
        if(forces[i]<0)
            printf("L");
        else if(forces[i]>0)
            printf("R");
        else
            printf(".");
    }
    return 0;
}

上一题