Codeforces Pangram в C++: несколько методов проверки панграмичности

Чтобы создать панграмму Codeforces на C++, вы можете использовать разные подходы. Панграмма – это предложение, в котором каждая буква алфавита содержится хотя бы один раз. Вот несколько способов добиться этого:

Метод 1: использование логического массива

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    int n;
    cin >> n;

    if (n < 26) {
        cout << "NO" << endl;
        return 0;
    }

    bool present[26];
    memset(present, false, sizeof(present));

    string word;
    cin >> word;

    for (char c : word) {
        if (isalpha(c)) {
            present[tolower(c) - 'a'] = true;
        }
    }

    for (bool p : present) {
        if (!p) {
            cout << "NO" << endl;
            return 0;
        }
    }

    cout << "YES" << endl;

    return 0;
}

Метод 2: использование битовой маски

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    int n;
    cin >> n;

    if (n < 26) {
        cout << "NO" << endl;
        return 0;
    }

    int mask = 0;

    string word;
    cin >> word;

    for (char c : word) {
        if (isalpha(c)) {
            int index = tolower(c) - 'a';
            mask |= (1 << index);
        }
    }

    if (mask == (1 << 26) - 1) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

    return 0;
}

Метод 3: использование набора

#include <iostream>
#include <set>
using namespace std;
int main() {
    int n;
    cin >> n;

    if (n < 26) {
        cout << "NO" << endl;
        return 0;
    }

    set<char> letters;

    string word;
    cin >> word;

    for (char c : word) {
        if (isalpha(c)) {
            letters.insert(tolower(c));
        }
    }

    if (letters.size() == 26) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

    return 0;
}