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。
以下是上述方法的实现:
输出
时间复杂度: O(n),其中n是我们字符串的长度
辅助空间。O(1) ,因为26个大小的布尔向量是恒定的。