1832. 判断句子是否为全字母句

100 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情

题目 leetcode.cn/

  • 全字母句 指包含英语字母表中每个字母至少一次的句子。
  • 给你一个仅由小写英文字母组成的字符串 sentence ,请你判断 sentence 是否为 全字母句 。
  • 如果是,返回 **true ;否则,返回 **false 。

示例

  • 示例 1:

    • 输入: sentence = "thequickbrownfoxjumpsoverthelazydog"
    • 输出: true
    • 解释: sentence 包含英语字母表中每个字母至少一次。
  • 示例 2:

    • 输入: sentence = "leetcode"
    • 输出: false

提示

  • 1 <= sentence.length <= 1000
  • sentence 由小写英文字母组成

代码

function checkIfPangram(sentence: string): boolean {
    if(sentence.length < 26) return false;
    let str = sentence.split('');
    let words = [...new Set(str)];
    return words.length === 26 ? true : false
};
  • 代码行数最少:
    • 首先排除掉字符串长度小于26的,直接返回false。小于26一定是有英文字母缺失的
    • 然后将字符串转化为单个英文字符的字符串数组
    • 使用new Set()将字符串数组去重,得到去重后的数组
    • 判断去重后的数组长度,如果长度等于26,表示没有缺失的英文字母,返回true。否则有英文字母缺失,返回false
function checkIfPangram(sentence: string): boolean {
    if(sentence.length < 26) return false;
    let words = [];
    for(let k = 0; k < sentence.length; k++){
        if(!words.includes(sentence[k])){
            words.push(sentence[k]);
        }
    }
    return words.length === 26 ? true : false;
};
  • 其他方式:
    • 首先和上面一样,排除掉字符串长度小于26的,直接返回false
    • 定义一个空数组,然后遍历整个字符串,依次取出字符串的每个英文字符,判断当前字符是否在数组中存在,如果不存在,将当前字符串添加到数组中。如果已经存在则不添加。
    • 然后判断数组长度,如果长度等于26,表示没有缺失的英文字母,返回true。否则有英文字母缺失,返回false
    • 说出来可能不信,这种方式消耗内存打败100%,上面的只有5.5%