OR165. 字符串替换
描述
给定一个仅由小写字母x和y组成且长度不超过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; }