题意:
对于给定字符串,我们可将其中的子串“ab”替换成“bba”,直到没有子串“ab”。
求操作次数。
由题意可知,a后的一个b会变成a前的两个b。
我们可以反向遍历,记录b的个数,每遇到a做一次操作。b*=2.继续。
附AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int mod=1e9+7; 5 6 int main(){ 7 string s; 8 cin>>s; 9 long long ans=0,cnt=0; 10 int n=s.size(); 11 for(int i=n-1;i>=0;i--){ 12 if(s[i]=='b') 13 cnt++; 14 else{ 15 ans+=cnt; 16 ans%=mod; 17 cnt=cnt*2%mod; 18 } 19 } 20 cout<<ans%mod<<endl; 21 return 0; 22 }