【每日一题Day55】LC1832判断句子是否为全字母 | 哈希表 位运算

简介: 思路:使用一个int类型的变量state代替哈希表,该变量是长度为26的二进制数字,它的第i ii位对应字母表的第i ii个字母,当为1时代表该字母存在;最后当state的所有位均为1时,返回true

判断句子是否为全字母【LC1832】


A pangram is a sentence where every letter of the English alphabet appears at least once.


Given a string sentence containing only lowercase English letters, return true if sentence is a pangram, or false otherwise.


居“家”的第一天 冲


哈希表

  • 思路:首先当字符串为全字母排列时,其长度一定大于26;然后使用哈希表数组记录该字母是否出现过,每次出现一个新字母时,整型变量count加1;最后当count==26时,返回true


  • 实现


class Solution {
    public boolean checkIfPangram(String sentence) {
        if (sentence.length() < 26){
            return false;
        }
        int count = 0;
        boolean[] map = new boolean[26];
        for (char c : sentence.toCharArray()){
            if (!map[c - 'a']){
                count++;
                map[c - 'a'] = true;
            }
        }
        return count == 26;
    }
}


。复杂度


  • 时间复杂度:O ( n ),n为字符串长度
  • 空间复杂度:O ( C )


位运算


  • 思路:使用一个int类型的变量state代替哈希表,该变量是长度为26的二进制数字,它的第i ii位对应字母表的第i ii个字母,当为1时代表该字母存在;最后当state的所有位均为1时,返回true


  • 实现


class Solution {
    public boolean checkIfPangram(String sentence) {
        if (sentence.length() < 26){
            return false;
        }
        int state = 0;
        for (char c : sentence.toCharArray()){
            state |= 1 << c - 'a';
        }
        return state == (1 << 26) - 1;
    }
}


。复杂度


  • 时间复杂度:O ( n ) ,n为字符串长度
  • 空间复杂度:O ( 1 )
目录
相关文章
|
7月前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
53 1
|
7月前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
46 1
|
7月前
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
62 0
|
7月前
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
30 0
|
7月前
【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举
【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举
39 0
|
7月前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
49 2
|
7月前
【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表
【每日一题Day317】LC2605从两个数字数组里生成最小数字 | 哈希表
42 0
|
7月前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
30 0
|
7月前
|
存储
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
36 0
|
7月前
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
【每日一题Day172】LC2399检查相同字母间的距离 | 哈希表
43 0