Codeforces Round #498 (Div. 3) D Two Strings Swaps(思维)
这里链接
好像没什么说的。。直接看代码吧。
解析:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define inf 2099999999
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
const int N=1e5+10;
int arr[N];
int main()
{
#ifdef LOCAL_DEFINE
freopen("D://rush.txt", "r", stdin);
#endif
ios::sync_with_stdio(false),cin.tie(0);
int n;
string a,b;
cin>>n>>a>>b;
int cnt=0;
for(int q=0;q<n/2;q++)
{
char c[]={a[q],a[n-q-1],b[q],b[n-q-1]};
int mi=2;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(i!=j&&c[i]==c[j])
{
int k=0,q=0;
while(k==i||k==j) k++;
while(q==i||q==j||q==k) q++;
//cout<<i<<' '<<j<<' '<<k<<' '<<q<<endl;
if(c[k]!=c[q])
{
if(k==0||k==1||q==0||q==1)
mi=min(mi,1);
}
else
mi=min(mi,0);
}
}
}
cnt+=mi;
}
if((n&1)&&a[n/2]!=b[n/2]) cnt++;
cout<<cnt<<endl;
}