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--;
}
我写了一个代码来找出字符串中缺失的回文字母表。它通过了一些测试用例并失败了一些。
我不确定我在哪里犯了错误,代码中的一切似乎都是正确的。
密码是,
#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--;
}