题目描述
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 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)$。