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

时间:2014-03-08 15:58:37

标签: c++

我想编写一个C ++程序来检查字符串是否包含从a到z的字母表中的每个字母。

3 个答案:

答案 0 :(得分:1)

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;
}

答案 1 :(得分:0)

假设一个字符集,其中字母从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;
}

答案 2 :(得分:0)

您始终可以执行此操作(以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标题,无论大写字母是在低位字母之前还是之后,或者它们之间还有其他符号,这都可以使用