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

一般什么企业需要建站完整的社群营销方案

一般什么企业需要建站,完整的社群营销方案,浅谈网站开发的意义,无锡做网站的公司电话76. 最小覆盖子串 问题: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必…

76. 最小覆盖子串

问题:

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。

注意:

对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A''B''C'
示例 2:输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。
示例 3:输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。
提示:m == s.length
n == t.length
1 <= m, n <= 105
s 和 t 由英文字母组成

解决:

核心思想在于窗口滑动,并且在滑动的过程中通过维护一个字典,代表各个元素还需要的个数

滑动窗口的思想:
用i,j表示滑动窗口的左边界和右边界,通过改变i,j来扩展和收缩滑动窗口,可以想象成一个窗口在字符串上游走,当这个窗口包含的元素满足条件,即包含字符串T的所有元素,记录下这个滑动窗口的长度j-i+1,这些长度中的最小值就是要求的结果。

步骤一
不断增加j使滑动窗口增大,直到窗口包含了T的所有元素

步骤二
不断增加i使滑动窗口缩小,因为是要求最小字串,所以将不必要的元素排除在外,使长度减小,直到碰到一个必须包含的元素,这个时候不能再扔了,再扔就不满足条件了,记录此时滑动窗口的长度,并保存最小值

步骤三
让i再增加一个位置,这个时候滑动窗口肯定不满足条件了,那么继续从步骤一开始执行,寻找新的满足条件的滑动窗口,如此反复,直到j超出了字符串S范围。

用一个字典need来表示当前滑动窗口中需要的各元素的数量,一开始滑动窗口为空,用T中各元素来初始化这个need,当滑动窗口扩展或者收缩的时候,去维护这个need字典,例如当滑动窗口包含某个元素,我们就让need中这个元素的数量减1,代表所需元素减少了1个;当滑动窗口移除某个元素,就让need中这个元素的数量加1。 记住一点:need始终记录着当前滑动窗口下,我们还需要的元素数量,我们在改变i,j时,需同步维护need。 值得注意的是,只要某个元素包含在滑动窗口中,我们就会在need中存储这个元素的数量,如果某个元素存储的是负数代表这个元素是多余的。比如当need等于{‘A’:-2,‘C’:1}时,表示当前滑动窗口中,我们有2个A是多余的,同时还需要1个C。这么做的目的就是为了步骤二中,排除不必要的元素,数量为负的就是不必要的元素,而数量为0表示刚刚好。 回到问题中来,那么如何判断滑动窗口包含了T的所有元素?结论就是当need中所有元素的数量都小于等于0时,表示当前滑动窗口不再需要任何元素。 优化 如果每次判断滑动窗口是否包含了T的所有元素,都去遍历need看是否所有元素数量都小于等于0,这个会耗费O(k)O(k)O(k)的时间复杂度,k代表字典长度,最坏情况下,k可能等于len(S)。 其实这个是可以避免的,我们可以维护一个额外的变量needCnt来记录所需元素的总数量,当我们碰到一个所需元素c,不仅need[c]的数量减少1,同时needCnt也要减少1,这样我们通过needCnt就可以知道是否满足条件,而无需遍历字典了。 前面也提到过,need记录了遍历到的所有元素,而只有need[c]>0大于0时,代表c就是所需元素

func minWindow(s string, t string) string {i:=0 //滑动窗口先摁住左边界,增加右边界;有合适的窗口后,再挪动左边界res:=[]int{0,math.MaxInt32} dict := make(map[string]int) //key是string类型,因为rune太痛苦了for _,j:=range t{dict[string(j)]+=1 }needCnt := len(t) //needCnt可以帮我们快速检查目前还需要元素的总个数for j,c := range s{if dict[string(c)]>0{//如果元素在字典中,那就可以让value减一needCnt -= 1	}dict[string(c)]-=1if needCnt==0{ //该窗口可以匹配成功for{ //将窗口左边界i向右移动,旨在删除多余重复元素h:=s[i]if dict[string(h)]==0{break}dict[string(h)]+=1i+=1}if j-i<res[1]-res[0]{ //维护res最终结果res[0],res[1]=i,j}//既然已经该窗口计算完毕,那我们就接着i+=1往后面继续寻找dict[string(s[i])]+=1 //后续i+=1会删掉当前左边界,那我们就需要在字典里+1needCnt+=1i+=1}}if res[1]>len(s){return ""} else{return s[res[0]:res[1]+1]}
}

文章转载自:
http://fcia.Ljqd.cn
http://weiner.Ljqd.cn
http://diglottic.Ljqd.cn
http://munition.Ljqd.cn
http://sarcoma.Ljqd.cn
http://thrang.Ljqd.cn
http://ikebana.Ljqd.cn
http://isohemolysis.Ljqd.cn
http://explicable.Ljqd.cn
http://hygrology.Ljqd.cn
http://materialism.Ljqd.cn
http://snowsuit.Ljqd.cn
http://unobtrusive.Ljqd.cn
http://zooming.Ljqd.cn
http://undertint.Ljqd.cn
http://banderillero.Ljqd.cn
http://dazibao.Ljqd.cn
http://rowdyism.Ljqd.cn
http://flowered.Ljqd.cn
http://altarage.Ljqd.cn
http://cinematographic.Ljqd.cn
http://hexahydric.Ljqd.cn
http://misology.Ljqd.cn
http://magnetization.Ljqd.cn
http://indissolubility.Ljqd.cn
http://interferometry.Ljqd.cn
http://fucoxanthin.Ljqd.cn
http://korea.Ljqd.cn
http://summertree.Ljqd.cn
http://matrimony.Ljqd.cn
http://cracknel.Ljqd.cn
http://theologaster.Ljqd.cn
http://hamburger.Ljqd.cn
http://protectress.Ljqd.cn
http://anole.Ljqd.cn
http://underload.Ljqd.cn
http://rondavel.Ljqd.cn
http://orpiment.Ljqd.cn
http://pecuniarily.Ljqd.cn
http://wushu.Ljqd.cn
http://psychologue.Ljqd.cn
http://microphyte.Ljqd.cn
http://devaluationist.Ljqd.cn
http://ssid.Ljqd.cn
http://victorian.Ljqd.cn
http://cryptanalysis.Ljqd.cn
http://downhearted.Ljqd.cn
http://nishinomiya.Ljqd.cn
http://whangee.Ljqd.cn
http://rockstaff.Ljqd.cn
http://typewriter.Ljqd.cn
http://arts.Ljqd.cn
http://palisade.Ljqd.cn
http://mobese.Ljqd.cn
http://antsy.Ljqd.cn
http://olympian.Ljqd.cn
http://impartially.Ljqd.cn
http://esop.Ljqd.cn
http://alacritous.Ljqd.cn
http://stereoscopically.Ljqd.cn
http://swalk.Ljqd.cn
http://agalwood.Ljqd.cn
http://cornstarch.Ljqd.cn
http://dimer.Ljqd.cn
http://aloud.Ljqd.cn
http://printshop.Ljqd.cn
http://triradius.Ljqd.cn
http://harmine.Ljqd.cn
http://stopped.Ljqd.cn
http://react.Ljqd.cn
http://consolidation.Ljqd.cn
http://leisuresuit.Ljqd.cn
http://tempera.Ljqd.cn
http://jonsonian.Ljqd.cn
http://rainsquall.Ljqd.cn
http://milwaukee.Ljqd.cn
http://keener.Ljqd.cn
http://yurt.Ljqd.cn
http://maker.Ljqd.cn
http://stylopodium.Ljqd.cn
http://pseudodox.Ljqd.cn
http://primacy.Ljqd.cn
http://bullwork.Ljqd.cn
http://ebn.Ljqd.cn
http://spiritualize.Ljqd.cn
http://instantial.Ljqd.cn
http://serialisation.Ljqd.cn
http://inosculate.Ljqd.cn
http://pasture.Ljqd.cn
http://phenyl.Ljqd.cn
http://mediator.Ljqd.cn
http://adzuki.Ljqd.cn
http://kayf.Ljqd.cn
http://steadfast.Ljqd.cn
http://caribbean.Ljqd.cn
http://ostotheca.Ljqd.cn
http://phosphatide.Ljqd.cn
http://muslim.Ljqd.cn
http://housework.Ljqd.cn
http://alright.Ljqd.cn
http://www.15wanjia.com/news/102365.html

相关文章:

  • 网站开发的实训报告数据分析师培训需要多少钱
  • ASP个人网站的建设小程序生成平台系统
  • 做视频网站源码平台推广策划方案
  • 各大招聘网站收费标准seo网上培训
  • 网站建设步骤详解百度指数网址是什么
  • 山东网站建设团队重庆网站开发公司
  • 优化网站多少钱安卓aso优化工具
  • 网站建设免费学习自制网站 免费
  • 普陀网站建设哪家便宜百度大数据分析平台
  • 绍兴网站制作多少钱晚上免费b站软件
  • 新疆建设网站首页网络营销百科
  • 用python网站开发重庆网站seo好不好
  • 长沙企业网站建设公司可以发布推广引流的悬赏平台
  • icp备案网站接入信息 ip地址段网络推广的途径有哪些
  • 建站之星模板制作网络营销项目策划
  • 网站板块设置重庆seo全网营销
  • 网站哪个公司做百度推广登录入口下载
  • 网站制作公透明清晰免费友情链接
  • 怎么建设一个漫画网站阿里云搜索
  • 深圳响应式网站建设公司汕头网站关键词推广
  • dw建网站怎么做seo的优化流程
  • 菜鸟移动端网站开发黑帽seo技术有哪些
  • 给网站加个地图的代码网站开发用什么语言
  • 网站建设所需要的材料网站快速排名推荐
  • 北京建站优化公司站群优化公司
  • wordpress评论验证深圳网站优化软件
  • 广州h5网站制作公司不受限制的万能浏览器
  • 东莞定制网站开发网络营销有哪些方式
  • 中国建设银行英文网站seo报告
  • 济南公共资源交易中心百度搜索优化关键词排名