gpt4 book ai didi

c - 有趣的字符串代码

转载 作者:行者123 更新时间:2023-11-30 21:18:02 24 4
gpt4 key购买 nike

问题的链接是:https://www.hackerrank.com/challenges/funny-string

问题陈述

假设您有一个长度为 N 且索引从 0 到 N−1 的字符串 S。字符串 R 是字符串 S 的反转。如果条件 |Si−S(i−1)|=|Ri−R(i−1)|,则字符串 S 很有趣。对于从 1 到 N−1 的每个 i 都成立。

(注:给定一个字符串str,stri表示str的第i个字符(0索引)的ascii值。|x|表示整数x的绝对值)

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

int main()
{
char r[10000],s[10000];
int t[10],i,j,n,c1,c2,l,f;
scanf("%d",&n);
for(i=0;i<=(n-1);i++)
{
t[i]=0;
c1=c2=0;f=0,l=0;
gets(s);
l=strlen(s);
for(j=0;j<l;j++)
r[j]=s[l-1-j];
for(j=1;j<l;j++)
{
c1=abs((int)(s[j])-(int)(s[j-1]));
c2=abs((int)(r[j])-(int)(r[j-1]));
if(c1==c2)
f=1;
else
f=0;
}
t[i]=f;
}
for(i=0;i<n;i++)
{
if(t[i]==0)
printf("Not Funny\n");
else
printf("Funny\n");
}
return 0;
}

这是我的代码所需的输入/输出是

输入

2
acxz
bcxz


输出

Funny
Not Funny


但是我得到了不同的输出,任何人都可以帮助我解决代码的问题,最糟糕的输出是测试用例值 1。我不明白它是如何给出该值的

最佳答案

你们很接近。

问题是,使用 scanf 输入数字后,缓冲区留下一个 \n 字符,该字符被解释为字符串的结尾,因此第一个输入为空字符串(不,这不好笑)。在输入字符串之前,您需要清理缓冲区:

scanf("%d",&n);

应该是:

scanf("%d",&n);
while (getchar() != '\n');

现在它可以工作了:

2
acxz
bcxz
Funny
Not Funny

当然,在弄清楚这个问题之后,请听听人们在对您的问题发表评论时提出的所有建议。并在编译器中启用警告。

关于c - 有趣的字符串代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com