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;
}