Я хотел написать программу на C++, которая проверяет, содержит ли строка каждую букву в алфавите от a до z.Как проверить, содержит ли строка каждую букву в алфавите в C++
ответ
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'' является смежным диапазоном. Это в ASCII, но не в EBCDIC. Таким образом, ваш код отклонил бы «abcdefghijklmnopqrstuvwxyz» на реализацию, которая использовала EBCDIC (если бы вы ее нашли), потому что она не содержит неиспользуемую кодовую точку «138 == ('i' + 1)' или символ ' '± '== (' j '- 1)'. –
Предполагая, что набор символов, где буквы являются смежными от А до Я:
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;
}
Nitpick: вам нужно учитывать верхний и нижний регистр. Кроме того, переменная 'c' будет иметь нижний поток, если будет введен какой-либо символ, меньший, чем' a'. :-( –
Извините, не понял, что первое утверждение было точным. –
@ThomasMatthews Для символов ниже 'a' вычитание даст отрицательный результат, который будет преобразован в огромный неподписанный результат, который определенно не будет менее 26 :) – fredoverflow
Вы всегда можете это сделать (в 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
заголовок и независимо от того, находятся ли крышки до или после нижних букв или у них есть другие символы между ними, это будет работать
- 1. Есть ли способ проверить, содержит ли строка букву Unicode?
- 2. Заменить каждую букву на фамилию последовательной буквой в алфавите
- 3. Как проверить, содержит ли символ конкретную букву
- 4. Как проверить каждую букву в виде строки
- 5. Как проверить, содержится ли строка в пользовательском алфавите?
- 6. Проверьте, содержит ли строка верхнюю букву «внутри»
- 7. Как проверить, содержит ли строка ВСЕ буквы алфавита в python?
- 8. Как проверить, содержит ли строка в файле в C?
- 9. Как проверить, есть ли символ в алфавите в C#
- 10. Как проверить, есть ли символ в алфавите?
- 11. Как определить, содержит ли строка 1 прописную букву в PHP
- 12. Как проверить, что сгенерированная строка содержит хотя бы одну букву
- 13. Как проверить, содержит ли две строки подходящую букву в Python?
- 14. проверить, содержит ли строка строку
- 15. Как проверить, содержит ли строка письмо в C#
- 16. В C#, как проверить, содержит ли строка целое число?
- 17. Как проверить, содержит ли строка символ в C#?
- 18. Как проверить, содержит ли строка текст в C# Winforms
- 19. Как проверить, содержит ли строка содержащую подстроку в конце - C
- 20. Как заменить каждую букву в строке буквой, следующей за ней в алфавите?
- 21. Как проверить, содержит ли строка символы чисел
- 22. проверить, содержит ли строка слэш
- 23. Как проверить, содержит ли строка A «содержит» B в TSQL?
- 24. Как проверить, содержит ли строка специальные символы?
- 25. Как проверить, содержит ли строка числовое значение
- 26. Как проверить, содержит ли строка только символы из массива
- 27. проверить, содержит ли строка число
- 28. Как проверить, содержит ли строка ввода букву в сценариях TCL/TK?
- 29. Простой способ проверить, содержит ли строка другую строку в C?
- 30. Проверьте, содержит ли строка строку в C++
Я этого не делаю! Любая попытка? – hivert
Используйте класс std :: string (http://www.cplusplus.com/reference/string/string/) и сделайте снимок. :) – gsamaras