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

开封建设教育协会网站专业做网站的公司有

开封建设教育协会网站,专业做网站的公司有,WordPress为啥这么慢,深圳宝安快餐服务200便宜76. 最小覆盖子串 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:76. 最小覆盖子串 2.详细题解 在s中寻找一个最短的子串,使之包含t中的所有字符,t中可能存在多个相同字符,寻找的子串也应至少含有…

76. 最小覆盖子串

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java

1. 题目描述

题目中转:76. 最小覆盖子串
在这里插入图片描述
在这里插入图片描述

2.详细题解

    在s中寻找一个最短的子串,使之包含t中的所有字符,t中可能存在多个相同字符,寻找的子串也应至少含有相同数量的相同字符(示例3可以进一步确认)。子串即连续的一段子字符串区间,可以进一步总结为寻找一个区间,该区间内的字符包含t中的所有字符,即双指针,左指针指向子串的起始索引,右指针指向子串的结束索引,初始时,左右指针均指向s起始索引,两个指针均从左至右移动。
  step1:右指针开始移动,直至包含了t中的所有字符【需要注意的视,t中的单一字符可能会出现多次,因此首先需要统计各字符出现的次数】;
  step2:左指针开始移动,移除左端所有非t中出现的字符,计算此时寻找的子串长度并与已知子串长度对比,若更小则更新子串长度和记录左右位置;
  step3:左指针指向的字符为t中存在的字符,移除该字符,则此时子串不再包含t中所有字符,重复步骤step1——step3。

3.代码实现

3.1 Python

class Solution:def minWindow(self, s: str, t: str) -> str:t_count = Counter(t)l, r, n = 0, 0, len(t)res = [0, -1, len(s)+1]cnt = 0indexs = []while r < len(s):c = s[r]if c in t_count:t_count[c] -= 1cnt += 1 if t_count[c] >= 0 else 0  # 每覆盖一个字符则加1indexs.append(r)while cnt == n and len(indexs) > 0:l = indexs.pop(0)if r - l + 1 < res[-1]:res = [l, r, r-l+1]cnt -= 1 if t_count[s[l]] >= 0 else 0  # 减少一个覆盖字符t_count[s[l]] += 1r += 1return s[res[0]: res[1]+1]

在这里插入图片描述
  为缩短左指针遍历的次数,使用了一个列表存储包含t符号的索引,但这样忽略了一个问题,列表的插入和删除的时间,尽管末尾插入时间复杂度为常数,但队首删除时间复杂度为O(N),为进一步优化,不再使用删除,直接记录下所有的位置,牺牲空间换取时间:

class Solution:def minWindow(self, s: str, t: str) -> str:t_count = Counter(t)l, r, n = 0, 0, len(t)res = [0, -1, len(s)+1]cnt = 0indexs = []ptr = -1while r < len(s):c = s[r]if c in t_count:t_count[c] -= 1cnt += 1 if t_count[c] >= 0 else 0  # 每覆盖一个字符则加1indexs.append(r)while cnt == n:ptr += 1l = indexs[ptr]if r - l + 1 < res[-1]:res = [l, r, r-l+1]cnt -= 1 if t_count[s[l]] >= 0 else 0  # 减少一个覆盖字符t_count[s[l]] += 1r += 1return s[res[0]: res[1]+1]

在这里插入图片描述

3.2 Java

class Solution {public String minWindow(String s, String t) {Map<Character, Integer> t_count = new HashMap<>();for (char c : t.toCharArray()) {t_count.put(c, t_count.getOrDefault(c, 0) + 1);}int l = 0, r = 0, n = t.length();int[] res = {0, -1, s.length() + 1};int cnt = 0;int head = 0;int ptr = -1;int[] indexs = new int[s.length()]; // use an array to store indiceswhile (r < s.length()) {char c = s.charAt(r);if (t_count.containsKey(c)) {t_count.put(c, t_count.get(c) - 1);if (t_count.get(c) >= 0)cnt++;indexs[head++] = r; // store the index}while (cnt == n) {ptr++;l = indexs[ptr];if (r - l + 1 < res[2]) {res[0] = l;res[1] = r;res[2] = r - l + 1;}t_count.put(s.charAt(l), t_count.get(s.charAt(l)) + 1);if (t_count.get(s.charAt(l)) > 0) cnt--;}r++;}return res[1] == -1 ? "" : s.substring(res[0], res[1] + 1);}
}

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code

http://www.yayakq.cn/news/158220/

相关文章:

  • 未来中森网站建设天津网站建设吐鲁番地区
  • 网站制作服务好的商家网页报价单页一般多少
  • dw做网站导航条ps做游戏下载网站
  • 世界企业排名500强青岛seo整站优化
  • 网站中的文字滑动怎么做的营销型网站建设式球磨机
  • 怎么看网站是谁做的wordpress 图片显示
  • 网站服务器到期了怎么续费网站设计计划书
  • 洛阳网站建设好做不厦门网红打卡地
  • 推荐专业的外贸建站公司网站开发需要几个人
  • 网站的服务器怎么做遵义祥云平台网站建设
  • 福州公司建站模板房产中介 网站模板
  • 什么网站可以做二建的题目网站面试通知表格怎么做
  • 中山住房和建设局网站湖南省郴州市宜章县邮政编码
  • 网站内移动的图片怎么做的新网站百度收录要几天
  • 网站建设会用到ppt吗阿里巴巴网页版登录入口
  • 酒店网站建设研究一个专门做网站建设的公司
  • 做网站到底需要什么Erphpdown wordpress
  • 快速建网站备案时的网站名称
  • 为网站做电影花絮建网站推广效果怎么样
  • 只做一页的网站多少钱做详情页生成代码的网站
  • 开发建设网站多久建站视频
  • 淄博手机网站开发公司大尺度做爰网站
  • 做直播网站需要证书吗重庆腊肠制作
  • 教育机构电商网站建设加盟禅城网站建设联系电话
  • 做外贸网站要什么条件辽宁省建设培训中心网站
  • 网站需要维护网站建设 技术 哪些内容
  • 美食网站代做如何建立一个小程序的网站
  • 全国网站备案咨询电话做古建的那些网站比较适合
  • 一个正规平台维护多久搜索引擎的关键词优化
  • 上海网站定制费用不想用wordpress