C程序 检查字符串是否为Pangram

C程序 检查字符串是否为Pangram

给定一个字符串Str . 任务是检查它是否是Pangram。

泛音图是一个包含英语字母中每个字母的句子。

示例:

输入: “快速的棕色狐狸跳过懒惰的狗”

输出:是一个Pangram。

解释:包含从’a’到’z’的所有字符] 。

输入: “快速的棕色狐狸跳过狗”

输出:不是一个潘格拉图。

解释:不包含从’a’到’z’的所有字符,因为缺少’l’、’z’、’y’。

方法: 以下是解决该问题的想法

创建一个mark[]布尔类型的数组,遍历字符串的所有字符,并将其标记为访问。小写和大写被认为是一样的。所以’A’和’a’被标记在索引0,同样’Z’和’z’被标记在索引25。

遍历所有的字符后,检查是否所有的字符都被标记。如果没有,则返回false,因为这不是一个pangram,否则返回true

遵循以下步骤来实施这一想法。

  • 创建一个大小为26的bool向量mark[] 。
  • 遍历字符串str的所有字符,并将str[i]-‘a’或str[i]-‘A’分别标记为1,表示低位和高位字符。
  • 遍历mark[]的所有索引
    • 如果所有的索引都被标记为已访问,那么返回值就是一个Pangram。
    • 否则,返回不是一个Pangram。

以下是上述方法的实现:

// 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)

输出

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

时间复杂度: O(n),其中n是我们字符串的长度
辅助空间。O(1) ,因为26个大小的布尔向量是恒定的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C语言 实例