开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情
公司已经有人🐏了
刷题的日常-2022年12月13号
一天一题,保持脑子清爽
判断句子是否为全字母句
来自leetcode的 1832 题,题意如下:
全字母句 指包含英语字母表中每个字母至少一次的句子。
给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为 全字母句 。
如果是,返回 true ;否则,返回 false 。
示例1:
输入:sentence = "thequickbrownfoxjumpsoverthelazydog"
输出:true
解释:sentence 包含英语字母表中每个字母至少一次。
示例2:
输入: sentence = "leetcode"
输出: false
理解题意
通过题意,我们可以将信息整理如下:
- 题目给出一个字符串
- 要求我们统计字符串中出现的字符
- 如果所有的小写英文字母都出现,则称该字符串为 全字母句
- 返回给定的字符串是否为 全字母句,是返回true,否则返回 false
做题思路
不管是英文字符还是其它字符,在计算机中都是用编码来进行标识的。既然是编码,那么就会有一个编码值。并且英文字符之间的顺序和编码顺序也是对应的,那么我们就可以用连续的数组来记录出现的位置,通过将位置进行位移保证不会越界,这道题的步骤可以整理如下。
- 开辟一个映射数组 map 记录字母是否出现过
- 开辟一个变量记录未出现的字母个数
- 遍历字符串中的字符
- 如果字符未出现,就将 未出现的次数 减一
- 未出现的字符为0,返回true,否则返回 false
代码实现
代码实现如下:
public class Solution {
public boolean checkIfPangram(String sentence) {
int res = 26, c;
boolean[] map = new boolean[26];
for (int i = 0; i < sentence.length(); i++) {
c = sentence.charAt(i) - 'a';
res -= map[c] ? 0 : 1;
map[c] = true;
if (res == 0) {
return true;
}
}
return false;
}
}