Skip to content
Related Articles

Related Articles

Improve Article

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

  • Difficulty Level : Basic
  • Last Updated : 30 Jul, 2020
Geek Week

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: Yes

Explanations: In the above string, str has all the English alphabet letters.

Input: str = “We promptly judged antique ivory buckles for the prize”

Output: No



 

Method-1:  Without using STL

This approach is based on Hashing. 

  1. 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. 
  2. Traverse the string character by character and mark the particular character as present in the Hash. 
  3. 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 false
bool 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 Code
int main()
{
    string str = "We promptly judged"
                 " antique ivory"
                 " buckles for the next prize";
  
    if (checkPangram(str) == true)
        printf("Yes");
    else
        printf("No");
  
    return (0);
}
Output
Yes

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)

Method-2: Using STL

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 no
string 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 code
int main()
{
    // Given string str
    string str = "We promptly "
                 "judged antique"
                 "ivory buckles for "
                 "the next prize";
  
    // Function Call
    cout << pangrams(str);
  
    return 0;
}
Output
Yes

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :