有一个小坑,就是当字符串长度是奇数并且本身就是回文字符串(没有不匹配字符)时,可以通过改变中间字符,达到必须更改一个字符的要求。
代码如下:
//
// main.cpp
// A. Mike and palindrome
//
// Created by 徐智豪 on 2017/4/21.
// Copyright © 2017年 徐智豪. All rights reserved.
//
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
string s;
cin>>s;
int n=s.size(),count=0;
for(int i=0;i<n/2;i++)
{
if(s[i]!=s[n-i-1])
count++;
}
cout<<((count==1||(count==0&&n%2==1))?"YES":"NO")<<endl;
return 0;
}