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;
}
来源:https://blog.csdn.net/qq_41431457/article/details/100045326