Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <string>
- #include <cmath>
- #include <vector>
- #include <fstream>
- #include <utility>
- #include <stdio.h>
- #include <map>
- using namespace std;
- map<char,int>m;
- vector<int>sh;
- string s;
- int main()
- {
- //freopen("input.txt" , "r" , stdin);
- //freopen("output.txt" , "w" , stdout);
- freopen("locker.in" , "r" , stdin);
- freopen("locker.out" , "w" , stdout);
- if (s.size()==1)
- {
- cout<<"YES";
- return 0;
- }
- cin>>s;
- for (int i=0; i<s.size(); i++)
- {
- m[s[i]]++;
- }
- int kc=0;
- for (int i = 0; i<s.size(); i++)
- {
- if (m[s[i]]%2==1)
- {
- kc++;
- m[s[i]]=0;
- }
- }
- for (int i=0; i<s.size(); i++)
- {
- m[s[i]]++;
- }
- if (s.size()%2==0 && kc>0)
- {
- cout<<"NO";
- return 0;
- }
- if (s.size()%2==1 && kc>1 && m[s[s.size()/2]]%2!=0)
- {
- cout<<"NO";
- return 0;
- }
- int n=s.size()/2;
- if (s.size()%2==0)
- n--;
- for (int i=0; i<=n; i++)
- {
- if (s[i]!=s[s.size()-i-1])
- sh.push_back(i);
- }
- if (sh.size()<=2)
- {
- swap(s[sh[0]],s[sh[1]]);
- if (s[sh[0]]==s[s.size()-sh[0]-1] && s[sh[1]]==s[s.size()-sh[1]-1])
- cout<<"YES";
- else cout<<"NO";
- }
- else cout<<"NO";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement