C++ program to check whether a String is a Pangram or not - GeeksforGeeks

30 Jul, 2020
Given string str, the task is to check whether a string is pangram or not using in C++.
A string is a Pangram if the string contains all the English alphabet letters.
Examples: 
Input: str = “We promptly judged antique ivory buckles for the next prize”Output: YesExplanations: In the above string, str has all the English alphabet letters.
Input: str = “We promptly judged antique ivory buckles for the prize”Output: No
This approach is based on Hashing. 
A Hashing data structure of boolean type is created of size 26, such that index 0 represents the character ‘a’, 1 represents the character ‘b’ and so on. Traverse the string character by character and mark the particular character as present in the Hash. After complete traversal and marking of the string, traverse the Hash and see if all characters are present, i.e. every index has true. If all are marked, then return true, else False.
A Hashing data structure of boolean type is created of size 26, such that index 0 represents the character ‘a’, 1 represents the character ‘b’ and so on. 
Traverse the string character by character and mark the particular character as present in the Hash. 
After complete traversal and marking of the string, traverse the Hash and see if all characters are present, i.e. every index has true. If all are marked, then return true, else False.
Below is the implementation of the above approach:
C++
// C++ Program to check if the given// string is a pangram or not  #include <bits/stdc++.h>using namespace std;  // Returns true if the string is// pangram else falsebool checkPangram(string& str){    // Create a hash table to mark    // the characters    // present in the string    vector<bool> mark(26, false);      // For indexing in mark[]    int index;      // Traverse all characters    for (int i = 0; i < str.length(); i++) {          // If uppercase character,        // subtract 'A' to find index.        if ('A' <= str[i] && str[i] <= 'Z')            index = str[i] - 'A';          // If lowercase character,        // subtract 'a' to find index.        else if ('a' <= str[i]                 && str[i] <= 'z')            index = str[i] - 'a';          // If this character is not        // an alphabet, skip to next one.        else            continue;          mark[index] = true;    }      // Return false    // if any character is unmarked    for (int i = 0; i <= 25; i++)        if (mark[i] == false)            return (false);      // If all characters were present    return (true);}  // Driver Codeint main(){    string str = "We promptly judged"                 " antique ivory"                 " buckles for the next prize";      if (checkPangram(str) == true)        printf("Yes");    else        printf("No");      return (0);}
Yes
Time Complexity: O(N), where N is the length of the string.Auxiliary Space: O(1)
The transform() method of STL can be used to check whether the given string is Pangram or not.
Syntax:
transform(s.begin(), s.end(), s.begin(), ::toupper);
Approach:In order to check if the string contains all the alphabets of the English alphabet: 
Step 1: Firstly convert all the letters into uppercase or lowercase because if it will check without converting, the lowercase and uppercase alphabets will be considered as different letters. Step 2: Sort the string and check the distinct letter. Step 3: Space will also be considered as a distinct entity. Step 4: Now check if count =27 then the string contains all the 26 alphabets. 
Below is the implementation of the above approach:
CPP
// C++ Program to check whether// a string pangram or not using STL  #include <bits/stdc++.h>using namespace std;  // Function to return given string// str is pangrams yes or nostring pangrams(string s){      // Initialization of count    int count = 0;      // Convert each letter into    // uppercase to avoid counting    // of both uppercase and    // lowercase as different letters    transform(s.begin(),              s.end(),              s.begin(),              ::toupper);      // Sort the string    sort(s.begin(), s.end());      // Count distinct alphabets    for (int i = 0; i < s.size(); i++) {        if (s[i] != s[i + 1])            count++;    }        // If count is 27 then the string    // contains all the alphabets    // including space as a    // distinct character    if (count == 27)        return "Yes";      else        return "No";}  // Driver codeint main(){    // Given string str    string str = "We promptly "                 "judged antique"                 "ivory buckles for "                 "the next prize";      // Function Call    cout << pangrams(str);      return 0;}
Yes
Time Complexity: O(N), where N is the length of the string.Auxiliary Space: O(1)
cpp-strings
STL
C++
Hash
Strings
cpp-strings
Hash
Strings
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Operator Overloading in C++
Sorting a vector in C++
Polymorphism in C++
Friend class and function in C++
List in C++ Standard Template Library (STL)
Given an array A[] and a number x, check for pair in A[] with sum as x (aka Two Sum)
Internal Working of HashMap in Java
Hashing | Set 1 (Introduction)
Count pairs with given sum
Hashing | Set 3 (Open Addressing)