题目意思:
给你一个字符串 这个字符串中只含有a和b 你需要对这个字符串进行的操作是 把其中所有的ab换成bba 新生成的也要换
<==================================思路=====================================>
刚开始其实很快想到了解法 找找规律其实还是蛮简单的吧 不难发现其实这些字符串经过变换以后a的数量没有发生变化 所有在左侧的a都到了右侧
所以a右边的b的数量就是解题的关键刚开始的写法是开另外一个数组来对应 对应的具体方法是碰到a就乘2碰到b就加一 后来发现其实没有必要开另外一个数组来对应 只需要开另外的temp来维护就好 卡了我三个小时的bug是1e9+7 我写成了1e7+9 没错 就是这种错误!!!
#include <iostream>
#include <cstring>
using namespace std;
const int Mod = 1000000007;
char a[5000000];
int main()
{
while(cin >> a) {
long long cnt = 0;
int len = strlen(a);
long long ans= 0;
for(int i = len - 1; i >= 0; i --) {
if (a[i] == 'b') {
cnt ++;
// cnt %= Mod;
}
else {
ans = (ans + cnt) % Mod;
cnt = (cnt * 2)% Mod;
}
}
cout << ans << endl;
}
return 0;
}