Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

C Program to Check if String is Pangram

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a string Str. The task is to check if it is Pangram or not. 

A pangram is a sentence containing every letter in the English Alphabet.

Examples: 

Input: “The quick brown fox jumps over the lazy dog” 
Output: is a Pangram 
Explanation: Contains all the characters from ‘a’ to ‘z’] 

Input: “The quick brown fox jumps over the dog”
Output: is not a Pangram 
Explanation: Doesn’t contain all the characters from ‘a’ to ‘z’, as ‘l’, ‘z’, ‘y’ are missing

Recommended Practice

Approach: Below is the idea to solve the problem

Create a mark[] array of Boolean types and iterate through all the characters of the string and mark it as visited. Lowercase and Uppercase are considered the same. So ‘A’ and ‘a’ are marked in index 0 and similarly ‘Z’ and ‘z’ are marked in index 25.

After iterating through all the characters check whether all the characters are marked or not. If not then return false as this is not a pangram else return true

Follow the below steps to Implement the idea:

  • Create a bool vector mark[] of size 26.
  • Iterate through all characters of the string str and mark str[i] – ‘a’ or str[i] – ‘A’ as 1 for lower and upper characters respectively.
  • Iterate through all the indices of mark[] 
    • If all indices are marked visited then return is a Pangram 
    • Else return  is not a Pangram.

Below is the Implementation of above approach

C




// A C Program to check if the given
// string is a pangram or not
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
  
// Returns true if the string is pangram else false
bool checkPangram(char str[])
{
    // Create a hash table to mark the characters
    // present in the string
    bool mark[26];
    for (int i = 0; i < 26; i++)
        mark[i] = false;
  
    // For indexing in mark[]
    int index;
  
    // Traverse all characters
    size_t size = strlen(str);
    for (int i = 0; i < size; 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 other than english
        // lowercase and uppercase characters.
        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 Program to test above functions
int main()
{
    char str[]
        = "The quick brown fox jumps over the lazy dog";
    if (checkPangram(str) == true)
        printf(" %s 
is a pangram", str);
    else
        printf(" %s 
is not a pangram", str);
    return (0);
}
  
// This code is contributed by Aditya kumar (adityakumar129)


Output

 The quick brown fox jumps over the lazy dog 
is a pangram

Time Complexity: O(n), where n is the length of our string 
Auxiliary Space: O(1), as 26 size Boolean vector is constant. 


My Personal Notes arrow_drop_up
Last Updated : 26 Oct, 2022
Like Article
Save Article
Similar Reads