题意:给定一串字符串,该字符串只含有v和o两种字符,把vv当做w,计算其中共有多少组wow(具体可参照题目样例理解)
题解:这道题要特别注意理解样例2的100是怎样得来的。由题意可知,将每个o的左右两边可能得到的w的数量相乘,再将其相加,可得到最终答案。w的个数是连续的v的个数-1.
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define INF 0x3f3f3f3f
const int N=2e6+50;
ll n,m;
map<int,int>mp;
int cmp(int a,int b)
{
return a>b;
}
ll mmp[N];
int main()
{
int t;
char s[N];
// cin>>t;
// while(t--)
// {
cin>>s;
ll l=strlen(s),sum=0,cnt=0,ans=0;
for(int i=1;i<l;i++)
{
if(s[i]=='v'&&s[i-1]=='v')
sum++;
}
for(int i=1;i<l;i++)
{
if(s[i]=='v'&&s[i-1]=='v')
{
cnt++;
}else if(s[i]=='o'){
ans+=(sum-cnt)*cnt;
}
}
cout<<ans<<endl;
// }
return 0;
}