题目描述
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence
,请你判断 sentence
是否为 全字母句。
如果是,返回 true
;否则,返回 false
。
样例
输入:sentence = "thequickbrownfoxjumpsoverthelazydog"
输出:true
解释:sentence 包含英语字母表中每个字母至少一次。
输入:sentence = "leetcode"
输出:false
限制
1 <= sentence.length <= 1000
sentence
由小写英语字母组成。
算法
(哈希表判断) $O(n)$
- 使用一个长度为 26 的哈希表记录字母是否出现过。
- 然后遍历一次数组,更新哈希表。
- 最后如果有字母没有出现过,则返回
false
。
时间复杂度
- 遍历数组一次,遍历哈希表一次,故总时间复杂度为 $O(n)$。
空间复杂度
- 仅需要常数的额外空间。
C++ 代码
class Solution {
public:
bool checkIfPangram(string sentence) {
vector<bool> seen(26, false);
for (char c : sentence)
seen[c - 'a'] = true;
for (bool s : seen)
if (!s)
return false;
return true;
}
};