一个计算字符串中有多少个不同字符的函数
A function to count how many different characters are in a string
我在网上找到了这个功能,我发现它非常有用
但我是编程新手,有人能简单解释一下它到底做了什么吗
#include <stdio.h>
int diffcount(char* s)
{
unsigned char seen[127];
int cnt=0,i;
for(i=0;i<127;i++)
seen[i]=0;
for(i=0;s[i];i++)
{
if(!seen[(int)s[i]])
{
cnt++;
seen[(int)s[i]]=1;
}
}return cnt;
}
int main(void) {
char string[20];
scanf("%s",string);
printf("Razlicitih znakova: %d\n", diffcount(string));
return 0;
}
首先我们初始化一个空的零数组seen[127];
"seen"数组用于查找数组s
中是否遇到了代码为i的字符:if seen[i]==1
比(char)i
在字符串 s
.
之后,我们通过 char* s
进行循环,并通过查看 seen[s[i]];
的值来检查 char s[i]
是否已经满足,如果为假,我们将 seen[s[i]]=true
(因为我们遇到了它)并增加我们的计数器。
函数的结果是变量cnt
的值
这也可能有帮助:
每个字符的代码都在 0 到 127 之间。例如,(int)'a' = 97
。
C 中的 bool 与 int
相同,这就是为什么我们有时使用 0 和 1 而不是 true 和 false
我在网上找到了这个功能,我发现它非常有用 但我是编程新手,有人能简单解释一下它到底做了什么吗
#include <stdio.h>
int diffcount(char* s)
{
unsigned char seen[127];
int cnt=0,i;
for(i=0;i<127;i++)
seen[i]=0;
for(i=0;s[i];i++)
{
if(!seen[(int)s[i]])
{
cnt++;
seen[(int)s[i]]=1;
}
}return cnt;
}
int main(void) {
char string[20];
scanf("%s",string);
printf("Razlicitih znakova: %d\n", diffcount(string));
return 0;
}
首先我们初始化一个空的零数组seen[127];
"seen"数组用于查找数组s
中是否遇到了代码为i的字符:if seen[i]==1
比(char)i
在字符串 s
.
之后,我们通过 char* s
进行循环,并通过查看 seen[s[i]];
的值来检查 char s[i]
是否已经满足,如果为假,我们将 seen[s[i]]=true
(因为我们遇到了它)并增加我们的计数器。
函数的结果是变量cnt
这也可能有帮助:
每个字符的代码都在 0 到 127 之间。例如,(int)'a' = 97
。
C 中的 bool 与 int
相同,这就是为什么我们有时使用 0 和 1 而不是 true 和 false