HDU 5904 BestCoder Round #88 Find Q (统计Q!)

网友投稿 598 2022-10-21

HDU 5904 BestCoder Round #88 Find Q (统计Q!)

HDU 5904 BestCoder Round #88 Find Q (统计Q!)

Find Q

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others) Total Submission(s): 636    Accepted Submission(s): 314

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?

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.

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

2qoderquailtyqqq

Sample Output

17

Source

​​BestCoder Round #88 ​​

Recommend

wange2014   |   We have carefully selected several similar problems for you:  ​​5932​​​ ​​5931​​​ ​​5930​​​ ​​5929​​​ ​​5928​​

题解:找出S的所有仅包含字母'q'的连续子串的数目。

就是cnt*(cnt+1)/2 累加呗...

AC代码

#include#includeconst int N = 100000+20; char S[N]; int main(){ int t; scanf("%d",&t); while(t--) { scanf("%s",S); long long cnt=0,ans=0; int L=strlen(S); for(int i=0;i<=L;i++) { if(S[i]=='q') { cnt++; } else if(S[i]!='q'&&S[i-1]=='q') { ans+=cnt*(cnt+1)/2; cnt=0; } } printf("%lld\n",ans); } return 0; }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:X-Pipe是由携程框架部门研发的Redis多数据中心复制管理系统
下一篇:一文讲解如何优雅的调试jar包
相关文章

 发表评论

暂时没有评论,来抢沙发吧~