我想编写一个C ++程序来检查字符串是否包含从a到z的字母表中的每个字母。
答案 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
标题,无论大写字母是在低位字母之前还是之后,或者它们之间还有其他符号,这都可以使用