列表

详情


OR165. 字符串替换

描述

给定一个仅由小写字母xy组成且长度不超过105的字符串,每次可以将字符串中的一个子串xy替换成字符串yyx,那么至少要替换多少次才能让字符串中不存在子串xy

输入描述

输入给定的字符串。

输出描述

输出最少替换次数对109+7取模后的结果。

示例1

输入:

xxy

输出:

3

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 472KB, 提交时间: 2020-08-01

#include <stdio.h>

int main()
{
    char str[100000];
    // 判断 y,x后面有多少y,就替换几次,替换之后,y数量*2
    // scanf("%s",str);// 7ms,580kb
    gets(str);
    long int len = strlen(str);
    long int num_y = 0, time = 0;
    for (long int i = len-1; i >= 0; i--)
    {
        if (str[i] == 'y')
            num_y++;
        else
        {
            time = (time + num_y)%(1000000007);
            num_y = (num_y*2)%(1000000007);
        }
    }
    
    printf("%ld",time);
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 504KB, 提交时间: 2020-08-01

#include <stdio.h>
int main(){
    char ss[100000];
    gets(ss);
    
    int t=0, sum=0;
    for(int i=(strlen(ss)-1);i>=0;i--){
        if(ss[i]=='y')
            t +=1;
        if(ss[i]=='x'){
            sum =(sum+t)%1000000007;
            t=(t*2)%1000000007;
        }
            
    }
    printf("%ld",sum);
   
    return 0;
}

上一题