LeetCode 809. 情感丰富的文字
文章目录
- 1. 题目
- 2. 解题
1. 题目
有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> "hiii"
。
我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", "eee", "ll", "ooo"
。
对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。
扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或以上。
例如,以 "hello"
为例,我们可以对字母组 "o"
扩张得到 "hellooo"
,但是无法以同样的方法得到 "helloo"
因为字母组 "oo"
长度小于 3。
此外,我们可以进行另一种扩张 "ll" -> "lllll"
以获得 "helllllooo"
。如果 S = "helllllooo"
,那么查询词 "hello"
是可扩张的,因为可以对它执行这两种扩张操作使得 query = "hello" -> "hellooo" -> "helllllooo" = S
。
输入一组查询单词,输出其中可扩张的单词数量。
示例:
输入:
S = "heeellooo"
words = ["hello", "hi", "helo"]
输出:1
解释:
我们能通过扩张 "hello" 的 "e" 和 "o" 来得到 "heeellooo"。
我们不能通过扩张 "helo" 来得到 "heeellooo" 因为 "ll" 的长度小于 3 。说明:
0 <= len(S) <= 100。
0 <= len(words) <= 100。
0 <= len(words[i]) <= 100。
S 和所有在 words 中的单词都只由小写字母组成。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/expressive-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
class Solution {public:int expressiveWords(string S, vector<string>& words) {if(S == "") return 0;int ans = 0, num = 0;vector<char> S_char;//记录连续的单一字符vector<int> count;//单一字符个数char prev = S[0];for(int i = 0; i < S.size(); i++){if(S[i] != prev){S_char.push_back(prev);count.push_back(num);num = 1;prev = S[i];}else{num++;}}S_char.push_back(prev);count.push_back(num);for(auto& w : words){if(w == "")continue;bool flag = true;int i = 0;num = 0;prev = w[0];// 对每个单词同样的方法for(int j = 0; j < w.size(); j++){if(w[j] != prev){if(i == S_char.size() || prev != S_char[i] || count[i] < num|| (count[i] != num && count[i]<3)){// 字符跟S不匹配、S的字符数小于num、个数不等且S中的个数小于3flag = false;//不能得到Sbreak;}i++;num = 1;prev = w[j];}else{num++;}}if(i == S_char.size() || prev != S_char[i] || count[i] < num|| (count[i] != num && count[i]<3))flag = false;if(flag && i == S_char.size()-1)ans++;}return ans;}
};
8 ms 7.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 809. 情感丰富的文字相关推荐
- leetcode809. 情感丰富的文字
有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> " ...
- C#LeetCode刷题-字符串
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) 15.3% 中 ...
- leetcode算法练习 JavaScript实现
leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...
- LeetCode中的那些题
目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 *******4.寻找两个有序数组的中位数(官方解答) : 5.最长回文子串(官方解答) 15. 三数之和 16. 最接近的三数之和 ...
- leetcode 转载
转载: https://blog.csdn.net/love905661433/article/details/84980135 LeetCode 1- 100 1. 两数之和 : https://b ...
- LeetCode题解汇总
题目 推荐指数 1. 两数之和 1 2. 两数相加 1 4. 寻找两个正序数组的中位数 2AAAA 6. Z 字形变换 1 7. 整数反转 2 8. 字符串转换整数 (atoi) 2AAA 9. 回文 ...
- LeetCode 700题 题解答案集合 Python
2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...
- 字符串 leetcode 总结
字符串 我的答案 题号 题目 通过率 难度 总结 掌握 #3 无重复字符的最长子串 33.4% 中等 #5 最长回文子串 29.0% 中等 #6 Z 字形变换 47.1% ...
- 【Leetcode】每日一题打卡(64)
1619. 删除某些元素后的数组均值 - 简单ac class Solution { public:double trimMean(vector<int>& arr) {sort( ...
最新文章
- [微信小程序]手指触摸动画效果(完整代码附效果图)
- plsql误删除数据,提交事务后如何找回?
- idea dump分析工具_实战:OOM 后我如何分析解决的
- LNMP(Nginx负载均衡,SSL原理,Nginx配置SSL,生产SSL密钥对)
- bnu- 34985 Elegant String
- 数据结构之图的应用:有向无环图
- java jre 与jdk的区别_学习java却不知道JRE和JDK的区别?看完这篇文章,让你受益匪浅...
- Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
- 蛋制品加工行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 2000份简历模板 唯美时尚简约个人简历模板 英文简历模板 简历封面 自荐信下载
- 如何用python做软件导出cad_使用python将cad批量导出至pdf
- android 10 多开,多开分身安卓10版
- 5-27 家谱处理 (30分)
- 齐齐哈尔市全国计算机等级考试,2019年3月黑龙江省齐齐哈尔市计算机等级考试注意事项...
- python播放url音频_从URL获取音频并播放i
- OWASP十大漏洞之一
- Nuvoton emWin HMI Solution
- Ubuntu下校园网锐捷客户端的连接
- 指南:使用 Trickle 限制应用程序带宽占用
- 浅谈partial class的理解