Problem Description
Byteasar is addicted to the English letter 'q'. Now he comes across a string
S
consisting of lowercase English letters.
He wants to find all the continous substrings of S , which only contain the letter 'q'. But this string is really really long, so could you please write a program to help him?
He wants to find all the continous substrings of S , which only contain the letter 'q'. But this string is really really long, so could you please write a program to help him?
Input
The first line of the input contains an integer
T(1≤T≤10)
, denoting the number of test cases.
In each test case, there is a string S , it is guaranteed that S only contains lowercase letters and the length of S is no more than 100000 .
In each test case, there is a string S , it is guaranteed that S only contains lowercase letters and the length of S is no more than 100000 .
Output
For each test case, print a line with an integer, denoting the number of continous substrings of
S
, which only contain the letter 'q'.
Sample Input
2 qoder quailtyqqq
Sample Output
1 7
Source
思路:应该是水题,看有几个连着的q,设为K,则sum+=q*(q+1)即可;
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[110000];
int main()
{
int t,l,i;
long long sum,k;
scanf("%d",&t);
while(t--)
{
sum=k=0;
scanf("%s",str);
l=strlen(str);
for(i=0;i<l;i++)
{
if(str[i]=='q')
k++;
else
{
sum+=k*(k+1)/2;
k=0;
}
}
sum+=k*(k+1)/2;
printf("%lld\n",sum);
}
return 0;
}