当前位置: 首页 > news >正文

力扣3703. 移除K-平衡子字符串

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这一题的大意是说给出一个只有’(‘和’)'的字符串,现在如果k 个 连续 的 ‘(’ 后面跟着 k 个 连续 的 ‘)’,即 ‘(’ * k + ‘)’ * k 称为k平衡
那么就让这样的子串移除,把所有的k平衡的子串移除后,返回剩下的字符串。
很明显是邻项匹配,那么就会涉及到栈,因为需要出现k次才能消除,因此我们需要记录一个字符出现的次数,需要用到pair
当涉及到栈的问题的时候,我们会默认用stack这个stl来解决,但实际上用vector模拟栈是更好的,因为vector支持随机访问。可以随时对每一个元素进行修改和拿取。
因此我们只需要用栈的方式存储元素,直到遇到符合条件的情况:
当一个元素是’)‘并且它出现的次数==k,并且在它前面的栈中的元素是’('并且‘(’出现的次数>=k,那么就符合匹配可以删除了。
完整代码如下:

class Solution {
public:typedef pair<char,int> pii;string removeSubstring(string s, int k) {vector<pii> st;int cnt=1;string ans;for(int i=0;i<s.size();i++){if(i==0){st.push_back({s[i],cnt});        }else{if(!st.empty()&&s[i]==st.back().first){st.back().second++;}else{st.push_back({s[i],cnt});}}if(st.back().first==')'&&st.back().second==k){if(st.size()>=2){if(st.size()>=2&&st[st.size()-2].first=='('&&st[st.size()-2].second>=k){//说明可以相除st.pop_back();if(st.back().second!=k)st.back().second=st.back().second-k;elsest.pop_back();}}}}for(int i=0;i<st.size();i++){for(int j=0;j<st[i].second;j++){ans+=st[i].first;}}return ans;}
};

时间复杂度O(n)
总结:在涉及到栈的时候并不一定要用到stack,用vector模拟栈更方便。‘当涉及出现多次是,用pair来表示栈元素。

http://www.dtcms.com/a/605956.html

相关文章:

  • 美团龙猫大模型LongCat-Flash总结
  • C语言反编译器 | 探索C语言反编译技术的原理与应用
  • 不用wordpress建站开网站做代发
  • EDI二次开发 - 实现个性化需求的创新
  • 【AI软件开发设计】AutoDS-Free:卖家如何用 AI 搭一套零费用的代发系统?
  • 深圳网站建设服务清单建站哪家好就要用兴田德润
  • LMDeploy Docker部署FP8量化模型的详细指南
  • 网站建设的总体目标温州网站建设风格
  • 几种web鉴权方式对比
  • 网站asp木马删除胖子马wordpress模板:q8免费版
  • Modbus03功能码读取
  • 2025.11.12 力扣每日一题
  • wordpress 架站 电子书石家庄网站推广
  • 有没有哪个网站可以做LCM模组阜宁县住房与城乡建设局网站
  • 天硕SSD自主主控技术解析:如何实现工业级宽温域下的高可靠存储
  • 牛客周赛round117--------题解1
  • 锂电池 SOC 估计技术综述:成熟算法、新颖突破与车企应用实践
  • 玄机-第八章 内存马分析-java01-nacos
  • 教育平台oss做视频网站网站横幅怎么更换
  • C语言程序编译器 | 提升C语言编程效率的工具与技巧
  • 网站建设 类型泰州seo
  • 基于springboot的共享汽车管理系统开发与设计
  • 灵猴机器人操作
  • 广东的一起(17)做网站ppt做视频的模板下载网站有哪些内容
  • Python编程实战 - Python实用工具与库 - 操作PDF:pdfplumber、PyPDF2
  • PDF文档导出分页功能实现
  • 甘肃住房建设厅网站深圳公司排名前50
  • 【OpenCV + VS】视频流处理与图像处理:实时视频流与视频保存
  • 【C++】map_set 的封装
  • 效益成本原则网站建设如何在网站申请做co