gpt4 book ai didi

c - 理解C中的字符数组

转载 作者:行者123 更新时间:2023-11-30 18:40:52 26 4
gpt4 key购买 nike

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

int check_pal(char *s)
{
int l = strlen(s),mid,i,h1[256]={0},h2[256]={0};
mid = l/2;
if(l&1)
for(i=0;i<mid;i++)
{
//printf("%c %c\n",s[i],s[i+mid]);
h1[s[i]]++;
h2[s[i+mid+1]]++;
}
else
for(i=0;i<mid;i++)
{
//printf("%c %c\n",s[i],s[i+mid]);
h1[s[i]]++;
h2[s[i+mid]]++;
}

for(i=0;i<256;i++)
if(h1[i]!=h2[i])
return 0;
return 1;
}

int main()
{
int t;
char s[1001];
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
if(check_pal(s))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

在上面的程序中,我想了解步骤 h1[s[i]]++;h2[s[i+mid]]++;

最佳答案

该函数检查字符串前半部分和后半部分的字符频率是否相同。

h1[s[i]]++;

s[i] 是字符串s 的字符ih1[] 是前半部分看到的字符数。 h1[s[i]] 是给定字符的编号。 ++ 增加该字符的计数。

h2[s[i+mid]]++; 与字符串的后半部分相同。 +mid 表示我们正在查看字符串的后半部分。

然后它检查所有字符的频率匹配。

关于c - 理解C中的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24381117/

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