HDU6480-A Count Task-字符串+公式

题意:

给一个字符串(全是小写),求所有的A(连续相同字符的字符串)中的子串个数。

公式:

w为相同字母的个数

 w=w+(1+cnt)*cnt/2;

AC代码:

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<string.h>
 4 #include<algorithm>
 5 #include<queue>
 6 
 7 using namespace std;
 8 #define inf 0x3f3f3f3f
 9 typedef long long ll;
10 
11 char a[100020];
12 
13 int main()
14 {
15     int T;
16     cin>>T;
17     while(T--)
18     {
19         scanf("%s",a);
20         int len=strlen(a);
21         ll w=0,cnt=1;
22         for(int i=0;i<len-1;i++)
23         {
24             ll cnt=1;
25             while(a[i]==a[i+1])
26                 cnt++,i++;
27 //            if(a[i]==a[i+1])
28 //                cnt++;
29 //            else
30 //            {
31 //                cnt=1;
32             w=w+(1+cnt)*cnt/2;
33 //            }
34         }
35         cout<<w<<endl;
36 
37     }
38     return 0;
39 }
View Code
原文地址:https://www.cnblogs.com/OFSHK/p/12960945.html