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

2018网站设计报价表免费外链网站seo发布

2018网站设计报价表,免费外链网站seo发布,网站建设怎么销售,网站建设中 图片题目链接:力扣 解题思路:滑动窗口 因为只需要最小子串中包含t中的所有字符即可,顺序不重要,所以可以先统计一下 t 中每个字符出现的次数,使用map进行统计: key表示t中的字符,value表示字符的个…

题目链接:力扣

解题思路:滑动窗口

  1. 因为只需要最小子串中包含t中的所有字符即可,顺序不重要,所以可以先统计一下 t 中每个字符出现的次数,使用map进行统计:
    1. key表示t中的字符,
    2. value表示字符的个数:值为正数时表示滑动窗口中需要value个字符,值为负数时表示滑动窗口中多余了 -value个字符
  2. 初始值:
    1. result = "":保存最小子串
    2. num = 0:窗口中包含的 t 中的有效字符个数(如果t中字符a有两个,滑动窗口中已经有两个a了,这个时候右遇到一个a,num并不加1,因为这个a是无效的)
    3. left = 0:滑动窗口的左边界
    4. right = 0:滑动窗口的右边界
  3. 不断左移滑动窗口的右边界,当num==t.length,找到了一个字串包含所有t中的字符,但是这个时候,滑动窗口的左边界可能会有一些无效的字符或者多余的字符
    1. 比如 BABC子串,包含t = BC,但是前面的BA是无效的,可以删去,最小子串为BC
  4. 具体移动过程如下,如果right < s.length,则一直往右移动:
    1. 如果 map.containsKey(s.charAt(right)):当前字符是 t 中的字符
      1. 如果map.get(s.charAt(right)) > 0:说明滑动窗口中包含当前字符的个数小于t中的字符个数,令 num++
      2. map.put(s.charAt(right),map.get(s.charAt(right))-1):令当前字符个数 -1,方便后面缩小滑动窗口的左边界
    2. 如果 num == t.length:说明滑动窗口中已经包含了所有t中的字符,但这个时候左边界可能有一些不在t中的字符或者多余的字符。需要循环缩小左边界:
      1. 如果 左边界的字符不在 t中,或者 map.get(s.charAt(left)) < 0,即字符有多余,这两种情况下都需要收缩:
        1. 如果在t中,并且map中的值小于0,说明左边界这个字符是多余的,令map中的值+1
        2. left++
    3. 如果result.equal("")或者 right - left +1 < result.length():更短的子串
      1. 令result = s.substring(left,right+1)

AC代码:
 

class Solution {public static String minWindow(String s, String t) {char[] sStr = s.toCharArray();char[] tStr = t.toCharArray();Map<Character, Integer> map = new HashMap<>();for (char c : tStr) {map.put(c, map.getOrDefault(c, 0) + 1);}int left = 0;String result = "";//记录滑动窗口中包含多少个t中的字符int num = 0;for (int right = 0; right < sStr.length; right++) {if (map.containsKey(sStr[right])) {if (map.get(sStr[right]) > 0) {num++;}map.put(sStr[right], map.get(sStr[right]) - 1);}if (num == tStr.length) {//缩小窗口右边界while (!map.containsKey(sStr[left]) || map.get(sStr[left]) < 0) {if (map.containsKey(sStr[left])) {map.put(sStr[left], map.get(sStr[left]) + 1);}left++;}if (result.equals("") || right - left + 1 < result.length()) {result = s.substring(left, right + 1);}}}return result;}
}

使用集合进行统计滑动窗口中需要的字符个数或者多余的字符个数,效率较低,可以使用hash表进行优化,思路类似,只不过将map换成hash表:

AC代码

class Solution {public static String minWindow(String s, String t) {char[] sStr = s.toCharArray();char[] tStr = t.toCharArray();int[] hash = new int[128];for (char c : tStr) {hash[c]++;}int left = 0;String result = "";//记录滑动窗口中包含多少个t中的字符int num = 0;for (int right = 0; right < sStr.length; right++) {hash[sStr[right]]--;if (hash[sStr[right]] >= 0) {num++;}while (num == tStr.length && hash[sStr[left]] < 0) {hash[sStr[left++]]++;}if (num == tStr.length && (result.equals("") || right - left + 1 < result.length())) {result = s.substring(left, right + 1);}}return result;}
}

 

http://www.dinnco.com/news/67489.html

相关文章:

  • 婚纱网站建设 最开始seo查询工具网站
  • 宜昌网站制作网站怎么优化排名靠前
  • 重庆五号线金建站全球搜官网
  • html5网站建设微信运营公司织梦模板网络维护培训班
  • 国外电商网站如何做icp备案互联网推广与营销
  • 德州做网站公司电话自媒体营销的策略和方法
  • 计算机网站开发是那个语言网络平台有哪些
  • 南宁网站推广公司外包公司排名
  • 做一个电影网站需要多少钱湖北疫情最新情况
  • 利用万网做网站合肥关键词快速排名
  • 重庆 做网站武汉百度信息流广告
  • 做网站用的图片分辨率2345浏览器网址
  • 局网站建设管理整改情况如何分步骤开展seo工作
  • 怎么查网站备案信息查询国际大新闻最新消息
  • java做的网站用什么发布seo网站优化工具
  • 网站关键词优化到首页后怎么做福州百度快速优化
  • 创业做网站 优帮云百度百科词条入口
  • 狐表做网站公司网站设计哪家好
  • wordpress文章静态化南昌关键词优化软件
  • 商务部网站市场体系建设司首页抖音搜索seo
  • 宁波房产信息网官方网站关键词搜索排行榜
  • 知识库管理系统郑州seo公司
  • 福建建设工程交易中心网站网络推广公司北京
  • 南京重庆网站建设网络广告形式
  • b2b电商网站建设google搜索优化方法
  • 模板做图 网站有哪些百度一下官网页
  • 怎样建网站步骤满足seo需求的网站
  • 网站建设实训设备学做网站需要学什么
  • 做会计要经常关注哪些网站关键词搜索指数查询工具
  • 外包网站开发 收费传统营销与网络营销的整合方法