判断句子是否为全字母句
难度:
标签:
题目描述
代码结果
运行时间: 21 ms, 内存: 16.0 MB
/*
* 思路:
* 使用Java Stream API,我们可以利用字符流来高效地检查sentence是否是全字母句。
* 我们首先将字符串转换为字符流,然后映射到对应的字符索引(0到25),
* 然后通过distinct()去重并计数,如果计数结果是26,则返回true。
*/
import java.util.stream.IntStream;
public class Solution {
public boolean checkIfPangram(String sentence) {
// 将sentence转换为字符流,映射到0到25之间的索引,去重并计数
long count = sentence.chars()
.map(c -> c - 'a')
.distinct()
.count();
// 如果不同字母数量为26,则是全字母句
return count == 26;
}
}
解释
方法:
该题解的核心思路是利用集合来去除字符串中的重复字符,并检查去重后的字符数量是否等于26。如果是,说明句子包含了英文字母表中的每个字母至少一次,因此是全字母句。使用集合是因为集合自动去重和高效的查找与插入能力。
时间复杂度:
O(n)
空间复杂度:
O(1)
代码细节讲解
🦆
为什么将输入字符串转换成集合后,只需检查集合的大小是否为26即可判断句子是否为全字母句?
▷🦆
集合在处理字符串时的去重功能是如何实现的,它背后的数据结构是什么?
▷🦆
在代码中 `return len(set(sentence)) == 26` 直接返回比较结果,这种实现方式有什么特别的效率优势吗?
▷🦆
如果输入的字符串包含了非小写英文字母的字符,这种方法还适用吗?
▷