算法leetcode每日一练1832. 判断句子是否为全字母句
Posted 二当家的白帽子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法leetcode每日一练1832. 判断句子是否为全字母句相关的知识,希望对你有一定的参考价值。
文章目录
- 1832. 判断句子是否为全字母句:
- 样例 1:
- 样例 2:
- 提示:
- 分析
- 题解
- 原题传送门:https://leetcode-cn.com/problems/check-if-the-sentence-is-pangram/
1832. 判断句子是否为全字母句:
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence
,请你判断 sentence
是否为 全字母句 。
如果是,返回 true
;否则,返回 false
。
样例 1:
输入:
sentence = "thequickbrownfoxjumpsoverthelazydog"
输出:
true
解释:
sentence 包含英语字母表中每个字母至少一次。
样例 2:
输入:
sentence = "leetcode"
输出:
false
提示:
- 1 <= sentence.length <= 1000
- sentence 由小写英语字母组成
分析
- 面对这道算法题目,二当家的陷入了沉思。
- 关键是如何存储遍历到哪些字母,利用集合,列表,map,数组都可以。
- 小写字母一共26个,所以也可以使用整形变量的位运算进行存储。
- 比较纠结的一个点是句子的长度介于1到1000,那到底是完全遍历完句子再判断是否全字母比较高效,还是遍历每个字母都去判断一次是否全字母比较高效呢。
题解
java
class Solution
public boolean checkIfPangram(String sentence)
if (sentence.length() < 26)
return false;
int ans = 0;
for (char c : sentence.toCharArray())
ans |= 1 << (c - 'a');
if (ans == 0b11111111111111111111111111)
return true;
return false;
c
bool checkIfPangram(char * sentence)
int ans = 0;
while (*sentence)
ans |= 1 << (*sentence - 'a');
if (ans == 0b11111111111111111111111111)
return true;
++sentence;
return false;
c++
class Solution
public:
bool checkIfPangram(string sentence)
if (sentence.length() < 26)
return false;
int ans = 0;
for (char &c: sentence)
ans |= 1 << (c - 'a');
if (ans == 0b11111111111111111111111111)
return true;
return false;
;
python
class Solution:
def checkIfPangram(self, sentence: str) -> bool:
if len(sentence) < 26:
return False
ans = 0
for c in sentence:
ans |= 1 << (ord(c) - 97)
if ans == 0b11111111111111111111111111:
return True
return False
go
func checkIfPangram(sentence string) bool
if len(sentence) < 26
return false
ans := 0
for _, c := range sentence
ans |= 1 << (c - 'a')
if ans == 0b11111111111111111111111111
return true
return false
rust
impl Solution
pub fn check_if_pangram(sentence: String) -> bool
if sentence.len() < 26
return false;
let mut ans = 0;
for c in sentence.as_bytes()
ans |= 1 << (c - 'a' as u8);
if ans == 0b11111111111111111111111111
return true;
false
typescript
function checkIfPangram(sentence: string): boolean
if (sentence.length < 26)
return false;
let ans = 0;
for (let i = 0; i < sentence.length; ++i)
ans |= 1 << (sentence.charCodeAt(i) - 97);
if (ans == 0b11111111111111111111111111)
return true;
return false;
;
原题传送门:https://leetcode-cn.com/problems/check-if-the-sentence-is-pangram/
非常感谢你阅读本文~
欢迎【👍点赞】【⭐收藏】【📝评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~
以上是关于算法leetcode每日一练1832. 判断句子是否为全字母句的主要内容,如果未能解决你的问题,请参考以下文章
「 每日一练,快乐水题 」1832. 判断句子是否为全字母句