Codeforces Round #498 (Div. 3) D. Two Strings Swaps
阿新 • • 發佈:2018-12-23
題目:
傳送門
程式碼如下:
#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; }