Codeforces Round #410 (Div.2) A.Mike and palindrome-模拟

来源:互联网 发布:广告阻拦软件 编辑:程序博客网 时间:2024/05/17 09:00

题目大意:

给定一个字符串,要求必须并且只能修改一个字符,问能否使字符串变为回文串。

题解:非常显然,你把这个串倒过来写一遍,然后和原串比较一下看有多少个位置是不一样的。

显然这是个偶数(因为每个不一样的地方都通缉了两次)

如果这个数字/2==1,那么可以。否则不行。

可是这样会WA。

原因是如果一个长度为奇数的回文串不用修改就是回文串,好像是不行的。但其实你可以修改中间那个字符,这样他还是回文串。

这个要特判一下。

代码:

//Codeforces Round #401 (Div.2) A.#include<iostream>#include<cstdio>#include<cstring>#define MAXN 100using namespace std;char s[MAXN];int main(){scanf("%s",s);int len=strlen(s),cnt=0;for(int i=0;i<len;i++)if(s[i]!=s[len-i-1]) cnt++;cnt/=2;if(cnt==0&&len%2==1){printf("YES\n");return 0;}if(cnt==1) printf("YES\n");else printf("NO\n");return 0;}


0 0
原创粉丝点击