求字符串改变一个字符串是否能形成回文串。
字符串前后位置字符比较,cnt记录不等数量:
cnt==1 ,则是;
cnt==0,即代表本身就是回文串,此时只有奇数长度的回文串才能改变中间一个字符仍就是回文串的条件。
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
char s[16];
int cnt=0,len;
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len/2;i++){
if(s[i]!=s[len-1-i])
cnt++;
}
if(cnt==1)
printf("YES\n");
else if(cnt==0&&len%2)
printf("YES\n");
else
printf("NO\n");
return 0;
}