【Codeforces 258D】 Count Good Substrings

【题目链接】

           http://codeforces.com/contest/451/problem/D

【算法】

           合并后的字符串一定是形如"ababa","babab",ab交替出现的字符串

           那么,判断一段是否为回文,只需判断首尾字符是否相等即可

【代码】

          

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;

int i;
long long ans1,ans2;
char s[MAXN];
long long sum[3][3];

int main() 
{
        
        scanf("%s",s+1);
        for (i = 1; i <= strlen(s + 1); i++)
        {
                sum[i%2][s[i]-'a']++;
                if (i % 2 == 0)
                {
                        ans1 += sum[1][s[i]-'a'];
                        ans2 += sum[0][s[i]-'a'];
                } else
                {
                        ans1 += sum[0][s[i]-'a'];
                        ans2 += sum[1][s[i]-'a'];
                }        
        }
        printf("%I64d %I64d\n",ans1,ans2);
        
        return 0;
    
}

猜你喜欢

转载自www.cnblogs.com/evenbao/p/9296812.html