A Count Task

A Count Task

Count is one of WNJXYK’s favorite tasks. Recently, he had a very long string and he wondered that how many substrings which contains exactly one kind of lowercase in this long string. But this string is so long that he had kept counting for several days. His friend Kayaking wants to help him, so he turns to you for help.
Input
The input starts with one line contains exactly one positive integer TT which is the number of test cases.
Each test case contains one line with a string which you need to do a counting task on.
Output
For each test case, output one line containing “y” where y is the number of target substrings.
Sample Input
3
qwertyuiop
qqwweerrttyyuuiioopp
aaaaaaaaaa
Sample Output
10
30
55
Hint
1<=T<=20,1<=len(string)<=105,1<=∑len(string)<=105
Strings only contain lowercase English letters.

题意大概就是现有一串全为小写字母的字符串求其中字串只含一种小写字母的所有情况。
思路,从前往后暴力因为只含一种字母所以我们只需要寻找最长的连续相同的字母设其长为l那么这一子段字串的个数就是(l+1)*l/2;就是以1为首项1为公差的等差序列的和(eg,长度为l的串有一个 长度为l-1的串有2个类推到长度为1的字串有l个)。还需要注意要用longlong
ac

#include
#include
#include
using namespace std;
int v[20089],s[2],m;
int dp[20089][50];
int main(){
    long long int n,s,sum;
    char x;
    string a;
    cin>>n;
    while(n--)
    {
        s=0,sum=0;
        cin>>a;
        a+='0';
        x=a[0];
        for(int i=0;i

你可能感兴趣的:(题)