C 中的回文缺失字母问题

Palindrome Missing Alphabet issue in C

我写了一个代码来找出字符串中缺失的回文字母表。它通过了一些测试用例并失败了一些。

我不确定我在哪里犯了错误,代码中的一切似乎都是正确的。

密码是,

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>

int main()
{
    char palindromeChar[100];
    fgets(palindromeChar, 100, stdin);
    int revCtr = strlen(palindromeChar) - 1, fwdCtr = 0, counter;
    for(counter = 0; counter < strlen(palindromeChar)/2; counter++) {
        if(palindromeChar[fwdCtr] != palindromeChar[revCtr]) {
            printf("%c", palindromeChar[fwdCtr]);
            break;
        }
        ++fwdCtr;
        --revCtr;
    }

}

当涉及到像这样的输入时,

malayaam

它打印出来,

m

是大小写的第一个字符,但如果正向字符不等于反向字符,则实际情况如何,要求打印。

为什么它自己打印第一个字符? 有什么问题和解决方法?

当您使用中断时,也尝试打印 {palindromeChar[revCtr]}。这将帮助您从前端和后端看到不匹配的字符。

fgets() 在数组中包含换行符 '\n',因此您需要跳过该字符。

int revCtr = strlen(palindromeChar) - 1

int revCtr = strlen(palindromeChar) - 2

下面关于首先仔细检查换行符的评论中的要点,因此,保持 revCtr 不变

    int revCtr = strlen(palindromeChar) - 1, fwdCtr = 0, counter;
    if (palindromeChar[revCtr] == '\n') {
        revCtr--;
    }