https://ac.2333.moe/Problem/view.xhtml?id=1749
wc 在爬塔时遇到了一串神秘字符,隐隐之中有一股力量从中透出
wc 很快发现了玄机,这个字符串中每一个含有“wc”的连续子序列都能为wc提供魔法值
找出字符串能为wc提供多少魔法值
注意如果某个连续子序列中有2个或以上“wc”,会导致魔法过剩,其魔法值为0
Input
第一行,数据组数T(1<=T<=10)
接下来T行,每行一个字符串s,有小写英文字母组成
1<=|S|<=10^5
Output
输出T行
对于每组数据,输出只含有一个“wc”作为连续子序列的个数
Sample Input
3 wcak woc awcawc
Sample Output
3 0 9
Hint
For first sample : wc,wca,wcak For third sample: awc,awca,awcaw,wc,wca,wcaw,cawc,awc,wc;
#include<iostream>
#include<algorithm>
using namespace std;int main()
{int T;cin >> T;while(T--){string s;cin >> s;int last = 0;int id = s.find("wc");long long left = id + 1, right = 1, ans = 0;while(id != -1){last = id + 1;id = s.find( "wc",id+2);if(id == -1) break;right = id - last + 1;ans += left * right;//cout << left << ' ' << right << endl;left = right;}if(last != s.length()-1) right = s.length() - last;else right = 1;ans += (long long) left * right;cout << ans << endl;}return 0;
}