代码(C++):
#include <iostream>
#include<stdio.h>
#include<string.h>
#define N 100000
using namespace std;
int GetDistance(char * S, char *T, int lens, int lent){
int i,j,c,d;
int E[N],F[N],G[N];
for(i=0,c=0;i<lent;i++){
if(T[i]=='a') E[i]=++c;
else E[i]=c;
}
for(i=0,j=lent-1,c=0;j>=0;i++,j--){
if(T[j]=='a') F[i]=++c;
else F[i]=c;
}
for(i=0,j=lens-1,c=0;i<=j;i++,j--){
if(c<lent) G[i]=G[j]=++c;
else G[i]=G[j]=lent;
}
d=0;
for(i=0,j=lens-1;i<j;i++,j--){
//先看i
if(S[i]=='a'){
d+=G[i]-E[G[i]-1];
}
if(S[i]=='b'){
d+=E[G[i]-1];
}
//再看j
if(S[j]=='a'){
d+=G[j]-F[G[j]-1];
}
if(S[j]=='b'){
d+=F[G[j]-1];
}
}
if(i==j){
if(S[i]=='a'){
d+=G[i]-E[G[i]-1];
}
if(S[i]=='b'){
d+=E[G[i]-1];
}
}
return d;
}
int main()
{
char S[N],T[N];
int lens,lent,d;
cin>>S;
cin>>T;
lens=strlen(S);
lent=strlen(T);
d=GetDistance(S,T,lens,lent);
cout<<d<<endl;
return 0;
}