力扣1832.判断句子是否为全字母句(cpp实现+解析)

news2024/11/28 11:46:03

文章目录

  • 1832.判断句子是否为全字母句
    • 解法一
    • 解法二
    • 解法三(最优)

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

难度:简单

力扣传送门:
https://leetcode.cn/problems/check-if-the-sentence-is-pangram/description/

题目要求:

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


解法一

我们只需要判断它和26个字母的序列是否一致就好了。

  1. 因此首先对sentence进行排序,sort
  2. sentence会有重复的字母出现,因此需要去重,unique
  3. 删除去重后的多余的字母,erase
class Solution {
public:
    bool checkIfPangram(string sentence) {
        sort(sentence.begin(),sentence.end());
        auto itbegin=unique(sentence.begin(),sentence.end());
        sentence.erase(itbegin,sentence.end());
        return sentence=="abcdefghijklmnopqrstuvwxyz";
    }
};

时间复杂度O(nlog2n + n +n),空间复杂度O(1)


解法二

哈希集和存储每个元素,因为集合具有去重,所以不用担心多余的字母重复存入,最后比较是否等于26即可。

class Solution {
public:
    bool checkIfPangram(string sentence) {
        unordered_set<int> s;
        for (auto& x:sentence)
        {
            s.insert(x);
        }
        return s.size()==26;
    }
};

时间复杂度O(n),空间复杂度O(C)


解法三(最优)

位运算,我们利用二进制的每一位来表示每一个字母,二进制的第一位位1,则表示为a,二进制的第二位对应b,则二进制的第i位为1,则代表存在第i个字符。

用一个变量存储每次左移后的数值,并且做或运算,如果所有字母都存在,则最后的结果必然是 :11111…11(26个字母对应的位全为1),则答案是 2 ^ 26 -1。比较他是否等于这个结果即可。

在这里插入图片描述

class Solution {
public:
    bool checkIfPangram(string sentence) {
        int res=0;
        for (auto& x:sentence)
        {
            res |=1<<(x-'a');
        }
        return res==(1<<26)-1;
    }
};

时间复杂度O(n),空间复杂度O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Compose学习 -> Image()

基本使用&#xff1a; 通过资源id加载资源文件 Image(painter painterResource(id R.mipmap.test_01),contentDescription "这是内容描述") 通过url地址加载网络图片 1、引入第三方库&#xff0c;并添加网络权限 implementation ("io.coil-kt:coil-comp…

【深入浅出Nacos原理及调优】「原理分析专题」配置中心加载原理和配置实时更新原理分析

官方资源 官方资源 带着问题去思考 客户端长轮询的响应时间会受什么影响为什么更改了配置信息后客户端会立即得到响应客户端的超时时间为什么要设置为30s带着以上这些问题我们从服务端的代码中去探寻结论。 配置中心 (Configuration Center) 系统开发过程中通常会将一些需…

用Python调用OpenAI API做有趣的事

获取 API KEY 首先需要 可以开全局的梯子&#xff0c;选择日本或韩国节点&#xff0c;可以通过 ipinfo 检查当前 IP 地址是否为日本或韩国地区&#xff0c;然后访问 OpenAI 网站注册账号并完成认证。 如果自己完成账号认证的成本太高&#xff0c;可以在某宝直接购买一个已经通…

存储也能“一键美颜”?看 XOCP 如何助力互联科技图片业务转型

近日&#xff0c;XSKY星辰天合联合“互联科技”推出了“图片云在线处理”解决方案&#xff0c;提供海量图片高效存储访问和在线图片处理服务&#xff0c;深入业务场景简化操作流程&#xff0c;提升照片流转速度&#xff0c;为客户打造高效敏捷的拍照体验。互联科技&#xff08;…

DAS Over FC 技术允许 ATTO 分解存储并完成 vSAN 认证套件

一、介绍 最近&#xff0c;ATTO Technology, Inc. 以前所未有的方式 完成了 VMware vSAN ReadyNode 认证套件。 测试台本身是公式化的&#xff0c;以三台 Dell R640 服务器作为主机。 除了用于引导的 SD 卡和用于日志记录的单个 SAS SSD 之外&#xff0c;不存在任何内部存储…

EXCEL基础:IFNA、VLOOKUP、SUMIFS函数的使用

注意&#xff1a;本操作数据来源于excel home&#xff0c;特此声明。 查看原始数据&#xff0c;如下所示为【商品】的相关信息&#xff1a; 查看原始数据&#xff0c;如下所示为【供应商】的相关信息&#xff1a; 主要目的&#xff1a;把以上相关信息搞在一张表上。 把下表…

基于jsp+mysql+ssm台球俱乐部管理系统-计算机毕业设计

项目介绍 台球俱乐部系统设计主要是管理员登录后对整个系统相关操作进行处理&#xff0c;可进行管理员的添加和删除&#xff0c;会员信息管理、付费信息管理、球桌信息管理、订桌信息管理等操作管理。采用目前最流行的ssm框架和eclipse编辑器、mysql数据库设计并实现的 本系统…

[附源码]计算机毕业设计冬奥会网上商城Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

什么是BPM系统?BPM流程管理系统介绍

一、什么是BPM系统&#xff1f; BPM系统&#xff08;英文全称&#xff1a;Business Process Management&#xff0c;翻译后简称BPM&#xff09;即业务流程管理系统&#xff0c;是指对端到端业务流程进行建模、分析和优化&#xff0c;以实现战略业务目标&#xff0c;其特点是注…

Elasticsearch:如何在 CentOS 上创建多节点的 Elasticsearch 集群 - 8.x

在我之前的文章 “Elasticsearch&#xff1a;使用 RPM 安装包来安装 Elastic Stack 8.x” 里&#xff0c;我详细地介绍了如何使用 RPM 安装包来安装 Elastic Stack 8.x。在今天的文章中&#xff0c;我来详细描述如何从零开始来创建一个含有三个节点的 Elasticsearch 集群。我们…

python文本处理尝试

Python文本处理尝试 最近打算看CSAPP&#xff0c;GitHub上看到有英语字幕ass源文件&#xff0c;想把字幕提取出来提高学习效率&#xff0c;先把ass文件转成txt文件&#xff0c;发现是这样&#x1f447; 都在Dialogue的后面&#xff0c;打算尝试提取一下 不太熟练&#xff0c;下…

解决 Eclipse 中不见 Maven 问题

在 Windows -> Preferences 不见 Maven 和 File -> New -> Project 均不见 Maven&#xff0c;但 Help -> Eclipse Marketplace -> installed 却可见已经安装&#xff0c;网上的各种方法都不能解决。 解决步骤&#xff1a; 关闭 Eclipse&#xff1b;清空目录 C:…

肿瘤网络平台

肿瘤网络平台是为广大肿瘤医生量身定做的学习&#xff0c;交流功能健全的网络平台&#xff0c;平台汇聚了会议、病例、专家讲堂等内容&#xff0c;广大的肿瘤医生可以随时分享、讨论专业知识。 一、平台价值 让医生 了解肿瘤前沿进展 提高业务水平 丰富临床经验 二、平台架构…

如何挖掘外贸客户需求

是客户的衣食父母。 俗话说“知己知彼&#xff0c;百战不殆”&#xff0c;外贸业务员都想把自己的产品推销给客户。除了知道自己产品的特点&#xff0c;还应该知道客户的需求是什么。因此&#xff0c;前期的客户调研工作非常重要。 不是所有的客户都是意向或潜在客户。只有当…

小程序canvas 缩放/拖动/还原/封装和实例--开箱即用

小程序canvas 缩放/拖动/还原/封装和实例一、预览二、使用2.1 创建和配置方法三、源码3.1 实例组件3.2 核心类一、预览 之前写过web端的canvas 缩放/拖动/还原/封装和实例。最近小程序也需要用到&#xff0c;但凡是涉及小程序canvas还是比较多坑的&#xff0c;而且难用多了&am…

[附源码]Node.js计算机毕业设计订餐系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

Linux中如何查看ntp是否同步?

Linux中如何查看ntp是否同步?在Linux中&#xff0c;查看ntp是否同步的方法主要有三种&#xff0c;分别是&#xff1a;ntpd命令、ntpstat命令、timedatectl命令&#xff0c;接下来是详细的内容介绍。  NTP用于将计算机客户或服务器的时间同步到另一服务器或参考时钟源。它使用…

Java基于微信小程序的计算机等级考试考练 毕业设计

网络的广泛应用给生活带来了十分的便利。所以把计算机等级考试考练与现在网络相结合&#xff0c;利用java技术建设计算机等级考试考练APP&#xff0c;实现计算机等级考试考练的信息化。则对于进一步提高计算机等级考试考练发展&#xff0c;丰富计算机等级考试考练经验能起到不少…

[附源码]Python计算机毕业设计电商后台系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

web前端期末大作业——HTML+CSS+JavaScript仿王者荣耀游戏网站设计与制作

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…