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

广州网站模块建设关键词怎么做快速的有排名

广州网站模块建设,关键词怎么做快速的有排名,个性网站设计欣赏,怎么免费建立公司网站最小覆盖子串 https://leetcode.cn/problems/minimum-window-substring/ 题目描述 题目分析f 覆盖子串:首先根据题意,要求目标字符串的元素必须都在子串中出现过,这表明可以是乱序出现。所以在解决问题是我们需要对子串和目标字符串做匹配&a…

最小覆盖子串

https://leetcode.cn/problems/minimum-window-substring/

题目描述

在这里插入图片描述

题目分析f

覆盖子串:首先根据题意,要求目标字符串的元素必须都在子串中出现过,这表明可以是乱序出现。所以在解决问题是我们需要对子串和目标字符串做匹配,查看子串是否符合要求。
∀ s ∈ S t s . t . s ∈ A n s \begin{align} \forall &s \in \boldsymbol{S_t} \\s.t. \qquad &s \in \boldsymbol{Ans}\end{align} s.t.sStsAns
比较朴素的思路:采用遍历的方法查看是否任意 s ∈ S t s \in \boldsymbol{S_t} sSt都在 A n s \boldsymbol{Ans} Ans
更好的方法:通过某种表示手段表示子串和目标字符串从而判断 A n s \boldsymbol{Ans} Ans是否覆盖 S t \boldsymbol{S_t} St(表示方法判断的复杂度应是 O ( 1 ) O(1) O(1)

题目解决

根据题目提示,确定使用滑动窗口的办法。两个注意点,窗口扩大和窗口缩小
当窗口扩大时注意是否满足条件,当满足条件时尝试缩小窗口。注意每当满足条件时,更新最优窗口大小。

遍历覆盖比较法

当满足覆盖时,缩小窗口,一个个判断
代码

class Solution {
public:bool is_covered(int cnt_s[], int cnt_t[]) {for (int i = 'A'; i <= 'Z'; i++) {if (cnt_s[i] < cnt_t[i]) {return false;}}for (int i = 'a'; i <= 'z'; i++) {if (cnt_s[i] < cnt_t[i]) {return false;}}return true;}string minWindow(string s, string t) {int slen = s.size(), tlen = t.size();string ans;if(slen < tlen) return ans;int ansleft = -1, ansright = slen;int cntwind[128] = {0}, cntt[128]={0};for(char &c : t){++cntt[c];}int left = 0;for(int right = 0; right < slen; ++right){++cntwind[s[right]];while(is_covered(cntwind, cntt)){if(right - left < ansright - ansleft){ansleft = left;ansright = right;}--cntwind[s[left]];++left;}   }return ansleft < 0 ? "" : s.substr(ansleft, ansright - ansleft + 1);}
};

表示覆盖比较法

通过预先设定窗口表示—— C u ( S t ) C_u(S_t) Cu(St)
通过种类,个数的方法表示是否覆盖
实际上通过种类数和个数表示了 S t S_t St,通过维护cntwind、covered_num判断窗口是否覆盖了 S t S_t St
融合了哈希和动归的思想

class Solution {
public:string minWindow(string s, string t) {int slen = s.size(), tlen = t.size();string ans;if(slen < tlen) return ans;int ansleft = -1, ansright = slen;int cntwind[128] = {0};int covered_num = 0;for(char &c : t){if(cntwind[c] == 0){++covered_num;}--cntwind[c];}int left = 0;for(int right = 0; right < slen; ++right){++cntwind[s[right]];if(cntwind[s[right]] == 0) --covered_num;while(covered_num == 0){if(right - left < ansright - ansleft){ansleft = left;ansright = right;}--cntwind[s[left]];if(cntwind[s[left]] < 0) ++covered_num;++left;}   }return ansleft < 0 ? "" : s.substr(ansleft, ansright - ansleft + 1);}
};

总结,巧妙的通过数字的变化表示了窗口状态的变化
++cntwind[s[right]]; if(cntwind[s[right]] == 0) --covered_num;

http://www.15wanjia.com/news/50599.html

相关文章:

  • 商水住房城乡建设网站网站优化招聘
  • 广州市建设工程交易网seo的工作内容
  • 百度网址大全网站大全腾讯朋友圈广告代理
  • 怎么做淘宝网站赚钱网络推广引流是做什么的
  • 一级A做爰片秋欲浓网站搜索引擎有哪些网站
  • 山东疫情最新消息今天seo网络营销
  • 有谁用2008做网站服务器谷歌 翻墙入口
  • 郑州建设网站建站拼多多seo怎么优化
  • 广州建站哪个济南兴田德润实惠吗如何进行搜索引擎优化?
  • 在阿里巴巴上做网站需要什么条件百度帐号管家
  • 网站空间怎么建站网站优化外包价格
  • 游戏网站免费入口手机流畅优化软件
  • 哪个网站公司做的好市场营销方案怎么写
  • 网站外链接自己可以怎么做网络营销策划推广
  • 企业建设网站的步骤是什么上海百度搜索排名优化
  • 安徽网站开发12月10日新闻
  • wordpress标签不被收录应用关键词优化
  • 做网站建设怎么介绍自己百度快速收录提交工具
  • 汕头东莞网站建设网站信息查询
  • 日本网络ip地址大全关键词排名优化公司外包
  • 个人做网站赚钱么seo优化网站推广全域营销获客公司
  • 引用网站信息怎么做备注seo工具在线访问
  • 好的网页网站设计给公司建网站需要多少钱
  • 长沙免费模板建站南京百度快速排名优化
  • 南宁做网站优化的公司网站seo教材
  • 关于做ppt的网站有哪些seo优化教程下载
  • 四川营销型网站建设怎么制作自己的个人网站
  • 国际军事最新头条新闻seo优化公司如何做
  • 新增备案 网站名字网站开发从入门到实战
  • 公司网站管理规定seo网站推广技术