69,774
社区成员
为什么我的代码中判断字符长度奇偶时会被跳过
顺便 帮忙解一下题也行
题目描述
DML有个只有小写字母的字符串。他想从字符串中更改一个字符,以便让这个字符串成为回文串。
回文串是一个字符串,从前往后读和从后往前读都相同,例如串 “z” “aaa” “aba” “abccba” 是回文串,但串 “acm” “ab”不是回文串。
输入
多实例,每个实例一行,输入一行字符串s,字符串长度len(1<=len<=100)。
输入到文件尾结束。
输出
如果DML只更改一个字符,使得结果字符串为回文串,则输出“YES”, 否则 输出“NO”。
样例输入 Copy
abccaa abbcca abcda
样例输出 Copy
YES NO YES
//我的代码(有问题,答案错误,判断字符长度奇偶被跳过):
#include <stdio.h>
#include <string.h>
int main(){
char z[110];
int len,i,cnt=0,ntc=0;
while(scanf("%s",&z)!=EOF){
len=strlen(z);
if(len==1) printf("YES\n");
if(len>1){
cnt=0;
ntc=0;
if(len%2!=0){
ntc==1;
}
for(i=0;i<len/2;i++){
if(z[i]!=z[len-i-1]){
cnt++;
}
}
if(cnt==1) printf("YES\n");
else if(cnt==0&&ntc==1) printf("YES\n");
else printf("NO\n");
}
}
return 0;
}