LeetCode 2135. 统计追加字母可以获得的单词数(位运算+哈希)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你两个下标从 0 开始的字符串数组 startWords 和 targetWords 。每个字符串都仅由 小写英文字母 组成。

对于 targetWords 中的每个字符串,检查是否能够从 startWords 中选出一个字符串,执行一次 转换操作 ,得到的结果与当前 targetWords 字符串相等。

转换操作 如下面两步所述:

  • 追加 任何 不存在 于当前字符串的任一小写字母到当前字符串的末尾。
    例如,如果字符串为 “abc” ,那么字母 ‘d’、‘e’ 或 ‘y’ 都可以加到该字符串末尾,但 ‘a’ 就不行。如果追加的是 ‘d’ ,那么结果字符串为 “abcd” 。
  • 重排 新字符串中的字母,可以按 任意 顺序重新排布字母。
    例如,“abcd” 可以重排为 “acbd”、“bacd”、“cbda”,以此类推。注意,它也可以重排为 “abcd” 自身。

找出 targetWords 中有多少字符串能够由 startWords 中的 任一 字符串执行上述转换操作获得。返回 targetWords 中这类 字符串的数目 。

注意:你仅能验证 targetWords 中的字符串是否可以由 startWords 中的某个字符串经执行操作获得。startWords 中的字符串在这一过程中 不 发生实际变更。

示例 1:
输入:startWords = ["ant","act","tack"], targetWords = ["tack","act","acti"]
输出:2
解释:
- 为了形成 targetWords[0] = "tack" ,可以选用 startWords[1] = "act" ,追加字母 'k' ,并重排 "actk""tack"- startWords 中不存在可以用于获得 targetWords[1] = "act" 的字符串。注意 "act" 确实存在于 startWords ,但是 必须 在重排前给这个字符串追加一个字母。
- 为了形成 targetWords[2] = "acti" ,可以选用 startWords[1] = "act" ,追加字母 'i' ,并重排 "acti""acti" 自身。示例 2:
输入:startWords = ["ab","a"], targetWords = ["abc","abcd"]
输出:1
解释:
- 为了形成 targetWords[0] = "abc" ,可以选用 startWords[0] = "ab" ,追加字母 'c' ,并重排为 "abc"- startWords 中不存在可以用于获得 targetWords[1] = "abcd" 的字符串。提示:
1 <= startWords.length, targetWords.length <= 5 * 10^4
1 <= startWords[i].length, targetWords[j].length <= 26
startWords 和 targetWords 中的每个字符串都仅由小写英文字母组成
在 startWords 或 targetWords 的任一字符串中,每个字母至多出现一次

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-words-obtained-after-adding-a-letter
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 将 startwords 里的单词转成 26 位 int 数字,再添加一个不存在的 bit 进去,所有的情况存到 哈希 里
  • 遍历 targetword 里的单词转成 int ,在哈希里能查到就可以转换
class Solution {
public:int wordCount(vector<string>& startWords, vector<string>& targetWords) {unordered_set<int> set;for(auto& s : startWords){int num = 0;for(auto c : s)num |= 1<<(c-'a');for(int i = 0; i < 26; ++i){if((num&(1<<i))==0)//添加了不存在的字母{set.insert(num | (1<<i));}}}int ans = 0;for(auto& s : targetWords){int num = 0;for(auto c : s)num |= 1<<(c-'a');if(set.find(num) != set.end())ans++;}return ans;}
};

460 ms 151.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

五、pink老师的学习笔记——CSS精灵技术(sprite)

5. CSS精灵技术&#xff08;sprite) 重点 5.1 为什么需要精灵技术 图所示为网页的请求原理图&#xff0c;当用户访问一个网站时&#xff0c;需要向服务器发送请求&#xff0c;网页上的每张图像都要经过一次请求才能展现给用户。 然而&#xff0c;一个网页中往往会应用很多小的…

Javadoc的Html文件传输chm

&#xfeff;&#xfeff;Javadoc的Html文件转chm 工具下载地址&#xff1a;http://msdn.microsoft.com/en-us/library/ms669985.aspx 两篇相关文章&#xff1a; MyEclipse生成javadoc文档http://blog.csdn.net/kakarot5/article/details/40683837 Java凝视总结http://blog.csd…

六、pink老师学习笔记——CSS三角形之美 margin负值之美文字围绕浮动元素行内块元素布局的巧妙运用

7. 拓展 7.1 margin负值之美 1). 负边距定位&#xff1a;水平垂直居中 咱们前面讲过&#xff0c; 一个绝对定位的盒子&#xff0c; 利用 父级盒子的 50%&#xff0c; 然后 往左(上) 走 自己宽度的一半 &#xff0c;可以实现盒子水平垂直居中。 2). 压住盒子相邻边框 上图第…

LeetCode 2136. 全部开花的最早一天(贪心)

文章目录1. 题目2. 解题1. 题目 你有 n 枚花的种子。每枚种子必须先种下&#xff0c;才能开始生长、开花。播种需要时间&#xff0c;种子的生长也是如此。给你两个下标从 0 开始的整数数组 plantTime 和 growTime &#xff0c;每个数组的长度都是 n &#xff1a; plantTime[i…

html悬浮窗口退出,网页中可关闭的漂浮窗口实现

注释部分为广告的左右调节&#xff0c;可以自行设定网页中可关闭的漂浮窗口关闭点击这里&#xff0c;关闭广告&#xff01;&#xff01;&#xff01;var bodyfrm ( document.compatMode.toLowerCase()"css1compat" ) ? document.documentElement : document.body;v…

pycharm profile对函数调用效率进行测试

假设有如下代码&#xff1a; def func1():for i in range(1000):print("i love python")def func2():for i in range(10):print("i love c")func3()def func3():for i in range(100):print("i love java")def main():func1()func2()if __name__…

八、pink老师的学习笔记—— CSS用户界面样式(鼠标样式、轮廓线、防止拖拽文本域)

2. CSS用户界面样式 所谓的界面样式&#xff0c; 就是更改一些用户操作样式&#xff0c;以便提高更好的用户体验。 更改用户的鼠标样式 (滚动条因为兼容性非常差&#xff0c;我们不研究)表单轮廓等。防止表单域拖拽 2.1 鼠标样式cursor 设置或检索在对象上移动的鼠标指针采…

LeetCode 2138. 将字符串拆分为若干长度为 k 的组

文章目录1. 题目2. 解题1. 题目 字符串 s 可以按下述步骤划分为若干长度为 k 的组&#xff1a; 第一组由字符串中的前 k 个字符组成&#xff0c;第二组由接下来的 k 个字符串组成&#xff0c;依此类推。每个字符都能够成为 某一个 组的一部分。对于最后一组&#xff0c;如果字…

九、一篇文章帮助你读懂CSS属性:vertical-align 垂直对齐

3. vertical-align 垂直对齐 有宽度的块级元素居中对齐&#xff0c;是margin: 0 auto;让文字居中对齐&#xff0c;是 text-align: center; 但是我们从来没有讲过有垂直居中的属性。 vertical-align 垂直对齐&#xff0c;它只针对于行内元素或者行内块元素&#xff0c; verti…

LeetCode 2139. 得到目标值的最少行动次数(贪心)

文章目录1. 题目2. 解题1. 题目 你正在玩一个整数游戏。从整数 1 开始&#xff0c;期望得到整数 target 。 在一次行动中&#xff0c;你可以做下述两种操作之一&#xff1a; 递增&#xff0c;将当前整数的值加 1&#xff08;即&#xff0c; x x 1&#xff09;。加倍&#…

十、CSS三行代码实现 溢出的文字省略号显示(white-space: nowrap;overflow: hidden;text-overflow: ellipsis;)

4. 溢出的文字省略号显示 4.1 white-space white-space设置或检索对象内文本显示方式。通常我们使用于强制一行显示内容 white-space:normal &#xff1b;默认处理方式white-space:nowrap &#xff1b; 强制在同一行内显示所有文本&#xff0c;直到文本结束或者遭遇br标签对…

LAMP环境安装与apache配置

可以写在一起也可以分开写 sudo apt-get install apache2 php5 sudo apt-get install libapache2-mod-php5 php5-mysql 修改apache2.conf AddType 是与类型表相关的&#xff0c;描述的是扩展名与文件类型之间的关系&#xff0c;如&#xff1a;AddType application/x-x509-ca-ce…

LeetCode 2140. 解决智力问题(动态规划)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二维整数数组 questions &#xff0c;其中 questions[i] [pointsi, brainpoweri] 。 这个数组表示一场考试里的一系列题目&#xff0c;你需要 按顺序 &#xff08;也就是从问题 0 开始依次解决&#xff09;&#xff0…

计算机的起源和历史英语作文,端午节的由来和历史英语作文

端午节的由来和历史英语作文端午节与春节和中秋节并列为中国三大节日。下面是小编分享给大家的端午节的由来和历史英语作文&#xff0c;希望能给您带来帮助&#xff01;端午节的由来和历史英语作文1The Dragon Boat Festival is a lunar holiday, occurring on the fifth day o…

LeetCode 2141. 同时运行 N 台电脑的最长时间(二分查找)

文章目录1. 题目2. 解题1. 题目 你有 n 台电脑。给你整数 n 和一个下标从 0 开始的整数数组 batteries &#xff0c;其中第 i 个电池可以让一台电脑 运行 batteries[i] 分钟。 你想使用这些电池让 全部 n 台电脑 同时 运行。 一开始&#xff0c;你可以给每台电脑连接 至多一个…

十二、HTML5新增标签特性详解(audio、video、input)

HTML5 第一天 一、什么是 HTML5 HTML5 的概念与定义 定义&#xff1a;HTML5 定义了 HTML 标准的最新版本&#xff0c;是对 HTML 的第五次重大修改&#xff0c;号称下一代的 HTML两个概念&#xff1a; 是一个新版本的 HTML 语言&#xff0c;定义了新的标签、特性和属性拥有一…

联想新电脑桌面没有计算机,联想电脑没有wifi图标不见了怎么办

1.联想笔记本电脑WiFi图标不见了,怎么回事吧,试了很多方法一、无线网卡开关未打开&#xff1b;1、查看周边有没有手动百机械开关&#xff0c;一般在前面板&#xff0c;上面标有无线符号。2、按一下Fn无线信号键(度F几中的一个)找打无线WIFI3、打开控制机板&#xff0c;右上角查…

十三、CSS 3新特性详解(一)——属性、结构伪类、伪元素选择器,nth-child与nth-of-type区别,2D rotate,calc函数、滤镜filter、过渡transition

七、CSS3 属性选择器(上) 什么是 CSS3 在 CSS2 的基础上拓展、新增的样式 CSS3 发展现状 移动端支持优于 PC 端CSS3 目前还草案&#xff0c;在不断改进中CSS3 相对 H5&#xff0c;应用非常广泛 属性选择器列表 属性选择器代码演示 &#xff08;1&#xff09;E[att] 选择具有…

信息的表示和处理

文章目录1. 信息存储2. 整数的表示learn from 《深入理解计算机系统》 1. 信息存储 大多数计算机&#xff0c;一字节&#xff08;最小的寻址单元&#xff09; byte 8 bits 位 C语言中一个指针的值&#xff08;无论它指向一个整数、一个结构或是某个其他程序对象&#xff09;…

学硕计算机考296算高分么,考研总分是多少算高分?考研340分是什么水平?

原标题&#xff1a;考研总分是多少算高分?考研340分是什么水平?每个考研的学生都想考一个高分&#xff0c;分数越高代表录取的希望越大&#xff0c;但是考研达到多少分算高分呢?有没有衡量考研分数的标准呢?小编为大家整理了关于考研总分高分相关的相关信息&#xff0c;一起…