【1684. 统计一致字符串的数目】

news2024/11/26 17:44:48

来源:力扣(LeetCode)

描述:

  给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串

  请你返回 words 数组中 一致字符串 的数目。

示例 1:

输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"]
输出:2
解释:字符串 "aaab""baa" 都是一致字符串,因为它们只包含字符 'a''b'

示例 2:

输入:allowed = "abc", words = ["a","b","c","ab","ac","bc","abc"]
输出:7
解释:所有字符串都是一致的。

示例 3:

输入:allowed = "cad", words = ["cc","acd","b","ba","bac","bad","ac","d"]
输出:4
解释:字符串 "cc""acd""ac""d" 是一致字符串。
 

提示:

  • 1 <= words.length <= 104
  • 1 <= allowed.length <= 26
  • 1 <= words[i].length <= 10
  • allowed 中的字符 互不相同 。
  • words[i] 和 allowed 只包含小写英文字母。

方法:遍历

  由题意可知,字符串 allowed 和字符串数组 words 中的所有字符串都只包含小写字母,因此我们可以用一个 32 位整数来表示一个字符串出现的字母集合。如果一个字母出现了,那么将对应整数的位设为 1。使用 mask 表示字符串 allowed 出现的字母集合。依次遍历字符串数组 words,假设第 i 个字符串 words[i] 对应出现的字母集合为 mask1,那么 words[i] 是一致字符串等价于 mask1 是 mask 的子集,即 mask1 ∪ mask = mask。统计一致字符串的数目并返回结果。

class Solution {
public:
    int countConsistentStrings(string allowed, vector<string>& words) {
        int mask = 0;
        for (auto c : allowed) {
            mask |= 1 << (c - 'a');
        }
        int res = 0;
        for (auto &&word : words) {
            int mask1 = 0;
            for (auto c : word) {
                mask1 |= 1 << (c - 'a');
            }
            if ((mask1 | mask) == mask) {
                res++;
            }
        }
        return res;
    }
};

1

复杂度分析
时间复杂度:O(n+∑mi),其中 n 是字符串 allowed 的长度,mi 是字符串 words[i] 的长度。
空间复杂度:O(1)。
author:力扣官方题解

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

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

相关文章

ElasticSearch系列——Kibana,核心概念

ElasticSearch系列——Kibana&#xff0c;核心概念Kibana下载地址Windows安装修改配置文件启动Kibana验证ES核心概念Index索引Mapping映射Document文档使用Kibana对ES进行操作查询所有索引查询指定索引创建索引指定分片和副本数删除索引创建映射查看指定索引的映射信息映射无法…

网络安全基础入门-概念名词

目录 网络安全学习&#xff08;2022.10.23&#xff09; 一、基础入门——概念名词 DNS 脚本语言 后门&#xff08;2022.11.06&#xff09; WEB WEB相关安全漏洞 演示案例 网络安全学习&#xff08;2022.10.23&#xff09; 一、基础入门——概念名词 查询网站&#xff…

【Linux】进程概念与进程状态

文章目录一、什么是进程1、进程概念2、进程描述 -- PCB二、进程的一些基本操作1、查看进程2、结束进程2、通过系统调用获取进程标示符3、通过系统调用创建子进程三、进程状态1、普适的操作系统层面2、具体Linux操作系统层面四、两种特殊的进程1、僵尸进程2、孤儿进程五、进程优…

社科研究中的问卷设计详解

文章目录参考的文献和网站等资源&#xff1a;参考的up主的讲解B站北师大钱婧老师、参考B站up除草姬&#xff1a;参考的书籍查阅过程中给自己补充的问卷基础知识cssci一篇关于兴趣问卷的案例分析看懂这篇论文需要补充的知识点SPSS和Mplus中如何操作参考的文献和网站等资源&#…

C语言从0到1之《三子棋》的实现

&#x1f57a;作者启明星使 &#x1f383;专栏&#xff1a;《数据库》《C语言》 &#x1f3c7;分享一句话&#xff1a; 沉香&#xff1a;差一点&#xff0c;怎么总是差一点 杨戬&#xff1a;一定是练功的时候总是差不多&#xff0c;到了关键的时候就是差一点 大家一起加油&…

Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)

需要源码请点赞关注收藏后评论区留言~~ 一、Application的生命周期 Application是Android的一大组件&#xff0c;在APP运行过程中有且仅有一个Application对象贯穿应用的整个生命周期 打开AndroidMainfest.xml 发现activity节点的上级正是application节点&#xff0c;不过该节…

手把手带你搭建个人博客系统(一)

⭐️前言⭐️ 该web开发系统涉及到的知识&#xff1a; Java基础MySQL数据库JDBC技术前端三件套&#xff08;HTMLCSSJavaScript&#xff09;Servlet 使用到的开发工具&#xff1a; ideavscodetomcatpostmanFiddler 博主将会手把手带你搭建个人博客系统。 因文章篇幅较长&am…

【Spring boot 静态资源处理】

默认静态资源处理 Spring Boot 默认为我们提供了静态资源处理&#xff0c;使用 WebMvcAutoConfiguration 中的配置各种属性。 建议大家使用 Spring Boot 的默认配置方式&#xff0c;如果需要特殊处理的再通过配置进行修改。 如果想要自 己 完 全 控 制 WebMVC &#xff0c;就需…

快速创建django项目管理系统流程

首先创建django project&#xff0c;虚拟环境选择我已经有的虚拟环境&#xff0c;下面是创建后的画面&#xff0c;简单的框架模板&#xff0c;需要配置改动一些代码参数&#xff0c;才能适合我自己的习惯。 这里我经常用到的习惯必须导入的是simpleui库&#xff0c;还有django的…

基于STM32-Socket-Qt 遥控小车(一代)

文章目录一、项目分析1. 项目简介2. 知识储备3. 硬件选择二、STM32部分三、QT部分四、遥控小车演示程序源码一、项目分析 1. 项目简介 本项目本质为客户端与服务器之间的通信&#xff0c;通过发送不同的指令&#xff0c;服务器和客户端进行不同的操作。 客户端&#xff1a;基…

声学特征提取

声学特征提取流程图 语谱图 语谱图的横坐标是时间&#xff0c;纵坐标是频率&#xff0c;坐标点值为语音数据能量。由于是采用二维平面表达三维信息&#xff0c;所以能量值的大小是通过颜色来表示的&#xff0c;颜色深&#xff0c;表示该点的语音能量越强。 语谱图形成过程 …

zabbix监控Linux

1. 环境配置&#xff1a; 主机名主机地址操作系统角色zabbix192.168.188.201Rocky Linux release 8.6zabbix-servernode1192.168.188.111CentOS7zabbix-agent 2. 配置zabbix客户端&#xff1a; 1>. 下载并安装zabbix客户端&#xff1a; [rootnode1 ~]# wget https://mi…

Ubuntu 22.04安装Cuda11.7和cudnn

安装显卡驱动 打开‘软件和更新。 点击附加驱动安装显卡驱动 如果已经安装显卡驱动&#xff0c;请忽略上面的步骤。 安装gcc 新安装的Ubuntu22.04 没有安装gcc&#xff0c;需要安装gcc。在终端输入gcc -version 查看有没有gcc。 执行命令 sudo apt install gcc安装CUDA …

什么是蜂窝移动网络?

文章目录前言移动网络 vs WIFI蜂窝移动通信网蜂窝网络实现移动上网通信网架构总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; 移动网络 vs WIFI 计网课外实验月&#xff0c;我走在宿舍一楼正数着AP有多少个&#xff0c;突然W…

待业将近一个月,晚上11点接到面试邀约电话,我却拒绝了...

前言 一位测试朋友最近一直在找工作&#xff0c;前两天刚拒绝了一个面试。那天晚上11点多&#xff0c;他接到一个HR的面试电话&#xff0c;让他第二天早上10点去公司面试。朋友和HR聊了两句&#xff0c;了解到这位HR经常加班&#xff0c;于是果断拒绝了这个面试。我还为他可惜&…

LongAdder的源码学习与理解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a; 才疏学浅的木子 &#x1f647;‍♂️ 本人也在学习阶段如若发现问题&#xff0c;请告知非常感谢 &#x1f647;‍♂️ &#x1f4d2; 本文来自专栏&#xff1a; Java基础 ❤️ 支持我&#xff1a;&#x1f44d;点赞 &#x1…

Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)

运行有问题或需要源码请点赞关注收藏后评论区留言 一、利用ContentResolver读写联系人 在实际开发中&#xff0c;普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据&#xff0c;比如查看联系人&#xff0c;短信&#…

Linux top命令的cpu使用率和内存使用率

文章目录前言一、cpu使用率1.1 top简介1.2 cpu使用率的来源二、内存使用率2.1 总内存有关的数据2.2 进程使用内存有关的数据2.3 内存使用率的来源三、 pmap参考资料前言 NAMEtop - display Linux processes一、cpu使用率 1.1 top简介 top程序提供当前运行系统的动态实时视图…

网络协议:一文搞懂Socket套接字

本篇内容包括&#xff1a;Socket 套接字的简介、Socket 套接字的分类、Java 中的 Socket 即 java.net.ServerSocket、java.net.Socket 的使用&#xff0c;以及Java 使用套接字 Scoket 编程的Demo。 一、Socket 简介 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、…

Qt编写跨平台RTSP/RTMP/HTTP视频流播放器

一、前言 很早以前就做过这款播放器的入门版本&#xff0c;最开始用的ffmpeg去解析&#xff0c;后面陆续用vlc播放器、mpv播放器来做&#xff0c;毕竟播放器提供的接口使用也很方便&#xff0c;而且功能强大&#xff0c;后面发现播放器主要的应用场景是播放视频文件&#xff0…