题目描述
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence
,请你判断 sentence
是否为 全字母句 。
如果是,返回 true
;否则,返回 false
。
示例 1:
输入:sentence = “thequickbrownfoxjumpsoverthelazydog”
输出:true
解释:sentence
包含英语字母表中每个字母至少一次。
示例 2:
输入:sentence = “leetcode”
输出:false
提示:
1 <= sentence.length <= 1000
sentence
由小写英语字母组成
解题方法
- C
bool checkIfPangram(char* sentence) {
int len = strlen(sentence); // 获取字符串长度
int index = 0; // 定义索引
char alphabet[26] = {0}; // 定义字母表
if(len < 26) // 少于 26 个字符一定不全
{
return false;
}
for(int i = 0; i < len; i++)
{
if('a' <= sentence[i] <= 'z') // 判断小写字母
{
index = sentence[i] - 'a'; // 拿到索引
alphabet[index]++; // 计数
}
else
{
return false;
}
}
for(int j = 0; j < 26; j++)
{
if(alphabet[j] == 0) // 查找未出现的字母
{
return false;
}
}
return true;
}
复杂度分析
- 时间复杂度:O(n+C),其中 n 是 sentence 的长度,C 是字符集的大小(即小写字母的个数)。整个过程只需要遍历一次 sentence 和 exist。
- 空间复杂度:O( C ),其中 C 为字符集大小。