
题目描述
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence
,请你判断 sentence
是否为 全字母句 。
如果是,返回 true
;否则,返回 false
。
示例 1:
输入:sentence = "thequickbrownfoxjumpsoverthelazydog"
输出:true
解释:sentence 包含英语字母表中每个字母至少一次。
示例 2:
输入:sentence = "leetcode"
输出:false
提示:
1 <= sentence.length <= 1000
sentence
由小写英语字母组成
解法
方法一:数组或哈希表
遍历字符串 sentence
,用数组或哈希表记录出现过的字母,最后判断数组或哈希表中是否有 \(26\) 个字母即可。
时间复杂度 \(O(n)\),空间复杂度 \(O(C)\)。其中 \(n\) 为字符串 sentence
的长度,而 \(C\) 为字符集大小。本题中 \(C = 26\)。
方法二:位运算
我们也可以用一个整数 \(mask\) 记录出现过的字母,其中 \(mask\) 的第 \(i\) 位表示第 \(i\) 个字母是否出现过。
最后判断 \(mask\) 的二进制表示中是否有 \(26\) 个 \(1\),也即判断 \(mask\) 是否等于 \(2^{26} - 1\)。若是,返回 true
,否则返回 false
。
时间复杂度 \(O(n)\),其中 \(n\) 为字符串 sentence
的长度。空间复杂度 \(O(1)\)。