力扣刷题——3306. 元音辅音字符串计数 II

news/2025/3/13 16:49:04/文章来源:https://www.cnblogs.com/yuhixyui/p/18770087

好久没搞刷题了,搞副业搞晕了。。。
看到题的第一感觉是滑动窗口,直接开写。

class Solution
{
public:int countOfSubstrings(string word, int k){vector<int> cnt(26, 0);int left = 0, right = 0;int res = 0;while (right < word.size()){cnt[word[right] - 'a']++;int tem = check(cnt);if (tem == -1){right++;continue;}if (right - left + 1 - tem > k){cnt[word[left] - 'a']--;cnt[word[right] - 'a']--;left++;continue;}if (right - left + 1 - tem == k){res++;}right++;}cnt[word[left] - 'a']--;left++;right--;while (true){int tem = check(cnt);if (tem == -1)break;if (right - left + 1 - tem < k)break;if (right - left + 1 - tem == k){res++;}cnt[word[left] - 'a']--;left++;}return res;}int check(vector<int> &cnt){if (cnt['a' - 'a'] == 0 || cnt['e' - 'a'] == 0 || cnt['i' - 'a'] == 0 || cnt['o' - 'a'] == 0 || cnt['u' - 'a'] == 0)return -1;int tem = cnt['a' - 'a'] + cnt['e' - 'a'] + cnt['i' - 'a'] + cnt['o' - 'a'] + cnt['u' - 'a'];return tem;}
};

调整了好几遍,结果写了一坨。。。关键还是没有过。。。
重新看了一遍上边的代码,感觉槽点太多了,本来是个左闭右开的滑动窗口,结果写的乱七八糟。回到问题上,在对用例word = "ieiaoud", k = 0分析了一下之后,发现只用一个滑动窗口难以解决这个问题,看了下题解,用两个滑动窗口就能够很好的解决。
核心思路再写一个函数sub(k),能够输出满足子串中非元音字母数>=k的子串数量,这样最终答案就是用sub(k) - sub(k + 1),实现如下:

class Solution
{
public:long long countOfSubstrings(string word, int k){return sub(word, k) - sub(word, k + 1);}long long sub(string &word, int k){int n = word.size();int left = 0, right = 0;vector<int> cnt(26, 0);long long res = 0;while (left < n){while (right < n && (right - left - check(cnt) < k || check(cnt) == -1)){cnt[word[right] - 'a']++;right++;}if ((right - left - check(cnt)) >= k && check(cnt) != -1){// 以[left...right]为前缀的子串都满足res += n - right + 1;}cnt[word[left] - 'a']--;left++;}return res;}int check(vector<int> &cnt){if (cnt['a' - 'a'] == 0 || cnt['e' - 'a'] == 0 || cnt['i' - 'a'] == 0 || cnt['o' - 'a'] == 0 || cnt['u' - 'a'] == 0)return -1;int tem = cnt['a' - 'a'] + cnt['e' - 'a'] + cnt['i' - 'a'] + cnt['o' - 'a'] + cnt['u' - 'a'];return tem;}
};

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

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

相关文章

数字先锋 | AI+政务,轻松跨语种!霍尔果斯政务服务升级蜕变

今年,义乌国际商贸城的一家袜子店火爆全网,商家通过搭载DeepSeek模型的AI视创工具,只需录制中文口型视频,即可通过系统自动生成阿拉伯语、西班牙语等多语种带货视频,将袜子生意做到了世界各地。 在全球化与数字化深度交织的今天,DeepSeek凭借自然语言处理尖端技术,不仅让…

25年湛江一模第19题(马尔可夫链 )

25年湛江一模第19题(马尔可夫链 )专题:概率+数列 题型:马尔可夫链 难度系数:★★★★题目 (25 年湛江一模第 19 题)甲参加了一场智力问答游戏,每轮游戏均有两类问题(难度系数较低的\(A\)类问题以及难度系数较高的\(B\)类问题)供选择,且每…

25 年湛江一模第8题(函数奇偶性+恒成立)

25 年湛江一模第8题(函数奇偶性+恒成立)专题:概率+数列 题型:马尔可夫链 难度系数:★★★★ 题目 (2025 年湛江一模第8题) 已知定义在\(\mathbf{R}\)上的函数\(f(x)\)为奇函数,且当\(x>0\)时,\(f(x)=e^{x}-a\),若\(\forall x \in \mathbf…

每美搭(1)

一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名:每美搭子们,组长博客链接 https://www.cnblogs.com/0623-k 1.1.2 团队项目描述 每美搭:每美搭是一款专注于服装搭配推荐的APP。它能精准获取用户个人基本体型、上传服装类型等多维度数据,结合地区天气、用户心情、服装…

嵌入向量计算示例

嵌入向量计算示例 1. 问题设定场景:电影推荐系统中用户对电影类型的偏好嵌入 输入特征:4种电影类型(动作片、喜剧片、科幻片、爱情片) 嵌入维度:n_e = 2 词汇大小:n_v = 42. 数据表示 (1)独热编码电影类型 独热编码向量动作片 [1, 0, 0, 0]喜剧片 [0, 1, 0, 0]科幻片 […

塔石串口服务器的工作模式有哪些

串口服务器通过支持多种工作模式,实现了串行接口与网络接口之间的数据透明传输,提供了灵活的网络通信解决方案。以下是串口服务器的几种常见工作模式:| TCP Server模式 在TCP Server模式下,串口服务器作为TCP服务器,等待客户端的连接请求。这种模式下,串口服务器会监听一…

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!ATK-DLT113IS开发板是正点原子基于全志T113-i处理器而研发的一款用于嵌入式Linux领域的开发板,其拥有高性能、高可靠性、低成本和丰富的接口资源,适用于嵌入式系统开发!T113-i芯片框架 …

Stochastic Orders 理解和相关运算(_随时补充)

Recall数学里,用\(o\)和\(O\)表示the order the terms. \(a_n = o(1)\). \(a_n = O(1)\).Stochastic order notation 是一种用来表示随机变量序列概率收敛的速记方法。 \(O_p(1)\)依概率有界; \(o_p(1)\)依概率收敛到0. \(X_n= O_p(a_n)\Leftrightarrow \frac{X_n}{a_n} =O_p…

DCC控制器模型铁路-蓝牙版本

蓝牙版本: 该单元加上App提供了一个完整的DCC控制器,具有击败更昂贵系统的功能。物有所值,可靠,使用简单,定制系统,以匹配您的火车头花名册。 包括F1到F32功能按钮兼容最新的声音解码器 添加您自己的loco名称和函数标题。 -在Android设备(手机或平板电脑)上安装App 对于初…

jMeter的下载和安装

jMeter简介: JMeter 是一款由 Apache 软件基金会开发的开源性能测试工具,主要用于模拟高负载场景下的应用程序行为,帮助开发者评估系统的性能、稳定性和可靠性。 核心功能1. 协议支持广泛:支持 HTTP/HTTPS、FTP、JDBC、SOAP、REST、WebSocket 等多种协议,可对 Web 应用、A…

测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。

合集 - LeetCode 题集(10)1.LeetCode题集-1- 两数之和2024-08-312.LeetCode题集-2 - 两数相加2024-09-053.LeetCode题集-3 - 无重复字符的最长子串2024-09-094.4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解2024-09-165.LeetCode题集-5 - 最长回文子串(一)202…

主从搭建innobackupex恢复从库报错Unable to open undo tablespace undologundo001

近日,用innobackupex重新搭建从库时报Unable to open undo tablespace undologundo001错误 下面是解决的过程: 启动从库时报错如下2025-01-16T14:43:16.367875+08:00 0 [ERROR] InnoDB: Unable to open undo tablespace undolog/undo001. 2025-01-16T14:43:16.367904+08:00 0…