如何计算一个文本字符串中有多少个不同的字母?

时间:2014-08-23 17:01:37

标签: c string diff letters

如何计算一个文本字符串中有多少个不同的字母?

2 个答案:

答案 0 :(得分:2)

实际上,它非常简单:你只需要跟踪字符串中已经遇到过哪些字符。

const char *str = "foo bar baz quirk qux";

bool found[1 << CHAR_BIT] = { 0 };

int n_distinct = 0;

for (const char *p = str; *p; p++) {
    unsigned char ch = *p;

    if (!found[ch]) {
        n_distinct++;
        found[ch] = 1;
    }
}

printf("Distinct characters: %d\n", n_distinct);

答案 1 :(得分:1)

创建一个名为uniqueLetters的char数组和一个名为currentLetter的char。创建一个for循环,将currentLetter逐个设置为字符串中的每个字符。在我描述的第一个循环中嵌套另一个for循环,检查currentLetter是否在uniqueLetters数组中。如果它不在uniqueLetters数组中,则将其添加到uniqueLetters数组中。最后计算uniqueLetters数组的长度。

要记住的一件事是's'和'S'被认为是不同的角色。如果要将它们计为相同的字母,则需要添加其他逻辑来检查uniqueLetter数组中是否存在小写或大写字母。

希望这有帮助!