A。Mike 和回文
每次测试的时间限制
2 秒
每次测试内存限制
256兆字节
输入
标准输入
输出
标准输出
Mike 有一个仅由小写英文字母组成的字符串 s 。他想从字符串中恰好更改一个字符,这样得到的字符串就是一个回文字符串。
回文字符串是指前后读法相同的字符串,例如字符串"z"、"aaaa"、"aba"、"abccba"是回文,但字符串"codeforces"、"reality"、"ab"不是。
输入
第一行和单行包含字符串 s ( 1 ≤ |s| ≤ 15 )。
输出
如果 Mike 可以更改一个字符,使得到的字符串是重码字符串,则打印"是"(不带引号),否则打印"否"(不带引号)。
笔者答案:
#include<stdio.h>
#include<string.h>
int main ()
{
char a[20];
int cnt,i,j;
cnt=0;
gets(a);
for(i=0,j=strlen(a)-1;i<strlen(a)/2;i++,j--)
{
if(a[i]!=a[j])
{
cnt++;
}
}
if(cnt==1)
{
printf("YES");
}
else
{
if(cnt==0&&strlen(a)%2!=0)
{
printf("YES");
}
else
{
printf("NO");
}
}
return 0;
}
易错点:
当cnt==0,且字符串长度为奇数时,可以改变一次位置处于中点的元素的值,这种情况也是符合条件的