gpt4 book ai didi

计算字符串中每个字母出现的次数

转载 作者:太空狗 更新时间:2023-10-29 15:22:25 26 4
gpt4 key购买 nike

如何计算字符串中每个字母(忽略大小写)在 c 中出现的次数?为了打印出 letter: # number of occurences,我有计算一个字母出现次数的代码,但我如何计算字符串中每个字母的出现次数?

{
char
int count = 0;
int i;

//int length = strlen(string);

for (i = 0; i < 20; i++)
{
if (string[i] == ch)
{
count++;
}
}

return count;
}

输出:

a : 1
b : 0
c : 2
etc...

最佳答案

假设您有一个系统,其中 char 是八位的,并且您要计算的所有字符都使用非负数进行编码。在这种情况下,您可以这样写:

const char *str = "The quick brown fox jumped over the lazy dog.";

int counts[256] = { 0 };

int i;
size_t len = strlen(str);

for (i = 0; i < len; i++) {
counts[(int)(str[i])]++;
}

for (i = 0; i < 256; i++) {
if ( count[i] != 0) {
printf("The %c. character has %d occurrences.\n", i, counts[i]);
}
}

请注意,这将计算字符串中的所有字符。如果您 100% 绝对肯定您的字符串内部只有字母(没有数字、没有空格、没有标点符号),那么 1. 要求“不区分大小写”开始变得有意义,2. 您可以减少条目数到英文字母表中的字符数(即 26),你可以这样写:

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

const char *str = "TheQuickBrownFoxJumpedOverTheLazyDog";

int counts[26] = { 0 };

int i;
size_t len = strlen(str);

for (i = 0; i < len; i++) {
// Just in order that we don't shout ourselves in the foot
char c = str[i];
if (!isalpha(c)) continue;

counts[(int)(tolower(c) - 'a')]++;
}

for (i = 0; i < 26; i++) {
printf("'%c' has %2d occurrences.\n", i + 'a', counts[i]);
}

关于计算字符串中每个字母出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213422/

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