如何在c++中检查字符串是否包含字母表中的每个字母

How to check whether a string contains every letter in the alphabet in C++

本文关键字:字母表 包含 是否 c++ 检查 字符串      更新时间:2023-10-16

我想写一个c++程序来检查一个字符串是否包含字母表中从a到z的所有字母

bool allLetters(string s) {
    vector<bool> checked(255, false);
    for (int i=0; i < int(s.size()); ++i)
        checked[s[i]] = true;
    for (int i='a'; i <= 'z'; ++i)
        if (!checked[i])
            return false;
    return true;
}

假设一个字母从a到z连续的字符集:

bool contains_all_letters(const char * p)
{
    unsigned seen = 0;
    while (*p)
    {
        unsigned c = *p++ - 'a';
        if (c < 26)
        {
            seen |= (1 << c);
        }
    }
    return seen == (1 << 26) - 1;
}

您总是可以这样做(在ASCII中)

bool has_alphabet(std::string const &s)
{
    std::bitset<26> alphabet;
    for (char c : s) {
        if (c >= 'A' && c <= 'Z')
            alphabet.set(c - 'A');
        else if (c >= 'a' && c <= 'z')
            alphabet.set(c - 'a');
    }
    return 26 == alphabet.count();
}

你需要包括bitset标题,无论大写是在小写字母之前还是之后,或者它们之间有其他符号,这将工作