题目:
传送门
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn=1e5+5;
int n;
char a[maxn],b[maxn];
int vis[30];
int judge (char a,char b,char c,char d)
{
memset (vis,0,sizeof(vis));
int num=0;
vis[a-'a']++; vis[b-'a']++; vis[c-'a']++; vis[d-'a']++;
for (int i=0;i<30;i++)
if(vis[i])
{
num++;
}
if(num==1)
return 0;
else if(num==4)
return 2;
else if(num==2)
{
if(vis[a-'a']==2)
{
return 0;
}
else
{
return 1;
}
}
else
{
if(a==b)
return 2;
else
return 1;
}
}
int main()
{
scanf("%d",&n);
scanf("%s%s",a,b);
int sum=0;
for (int i=0;i<n/2;i++)
{
sum+=judge(a[i],a[n-i-1],b[i],b[n-i-1]);
}
if(n%2&&a[n/2]!=b[n/2])
sum++;
printf("%d\n",sum);
return 0;
}