798A

来源:互联网 发布:人员管理系统 java 编辑:程序博客网 时间:2024/06/07 07:22

In this problem,we can change the only one character.We define a variable amount to count the number of different characters when we traverse from the both ends to the middle.When the amount>=2,it means we must change more than once,so we just print "NO".When the amount equals one,we just print "YES".But when the amount equals zero,what we should do depends on the size of the string.If the size is odd,we can just change the alphebet in the middle,so in this case,we can print "YES".However, when the size of the string is even,it means we have to change at least two alphebats.So we should print "NO".Well, that is all.微笑

#include<iostream>#include<vector>#include<string>#include<set>#include<map>#include<unordered_set>#include<unordered_map>#include<algorithm>#include<queue>using namespace std;int main(){string s;while (cin >> s){int i = 0, j = s.size() - 1;int amount = 0;while (i < j){if (s[i] != s[j]) amount++;if (amount >= 2){cout << "NO" << endl;break;}i++;j--;}if (amount == 1) cout << "YES" << endl;else if (amount == 0){if (s.size() % 2)cout << "YES" << endl;else cout << "NO" << endl;}}system("pause");return 0;}


0 0
原创粉丝点击