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

海淀区社区建设网站移动商城官网

海淀区社区建设网站,移动商城官网,镇江微信推广平台,网站内容管理系统(cms)描述 分析 滑动窗口。 参考力扣官方的题解思路 本问题要求我们返回字符串 s 中包含字符串 t 的全部字符的最小窗口。我们称包含 t 的全部字母的窗口为「可行」窗口。 我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针#xff0c;一个用于「延伸… 描述 分析 滑动窗口。 参考力扣官方的题解思路 本问题要求我们返回字符串 s 中包含字符串 t 的全部字符的最小窗口。我们称包含 t 的全部字母的窗口为「可行」窗口。 我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针一个用于「延伸」现有窗口的 r 指针和一个用于「收缩」窗口的 l 指针。在任意时刻只有一个指针运动而另一个保持静止。我们在 s 上滑动窗口通过移动 r 指针不断扩张窗口。当窗口包含 t 全部所需的字符后如果能收缩我们就收缩窗口直到得到最小窗口。 如何判断当前的窗口包含所有 t 所需的字符呢我们可以用一个哈希表表示 t 中所有的字符以及它们的个数用一个哈希表动态维护窗口中所有的字符以及它们的个数如果这个动态表中包含 t 的哈希表中的所有字符并且对应的个数都不小于 t 的哈希表中各个字符的个数那么当前的窗口是「可行」的。 直接看代码。 代码 版本1超时 public static String minWindow(String s, String t) {// 记录t中的所有字符和数量HashMapCharacter, Integer map new HashMap();for (int i 0; i t.length(); i) {map.put(t.charAt(i), map.getOrDefault(t.charAt(i), 0) 1);}int minLen Integer.MAX_VALUE;int left 0, right 0;// 滑动窗口左边固定右边滑动for (int i 0; i s.length(); i) {if (s.length()-i t.length()) break;HashMapCharacter, Integer tmp new HashMap(map);for (int j i; j s.length(); j) {if (tmp.containsKey(s.charAt(j))) {tmp.put(s.charAt(j), tmp.get(s.charAt(j)) - 1);if (tmp.get(s.charAt(j)) 0) {tmp.remove(s.charAt(j));}}if (tmp.size() 0) {if (j - i 1 minLen) {minLen j - i 1;left i;right j;}break;}}}return minLen Integer.MAX_VALUE ? : s.substring(left, right 1);}版本2官方版本能看懂但自己写不出来 class Solution {MapCharacter, Integer ori new HashMapCharacter, Integer();MapCharacter, Integer cnt new HashMapCharacter, Integer();public String minWindow(String s, String t) {int tLen t.length();// 记录t出现字符集合for (int i 0; i tLen; i) {char c t.charAt(i);ori.put(c, ori.getOrDefault(c, 0) 1);}// 定义左右指针int l 0, r -1;int len Integer.MAX_VALUE, ansL -1, ansR -1;int sLen s.length();while (r sLen) {r;if (r sLen ori.containsKey(s.charAt(r))) {// 字符包含在t中的话记录到另一个集合cnt中cnt.put(s.charAt(r), cnt.getOrDefault(s.charAt(r), 0) 1);}while (check() l r) {// 说明此子序列包含了所有t中的字符if (r - l 1 len) {len r - l 1;ansL l;ansR l len;}if (ori.containsKey(s.charAt(l))) {cnt.put(s.charAt(l), cnt.getOrDefault(s.charAt(l), 0) - 1);}l;}}return ansL -1 ? : s.substring(ansL, ansR);}public boolean check() {// 检查 ori 是否包含了 所有的cnt种的字符并且数量要小于cnt中的字符Iterator iter ori.entrySet().iterator();while (iter.hasNext()) {Map.Entry entry (Map.Entry) iter.next();Character key (Character) entry.getKey();Integer val (Integer) entry.getValue();if (cnt.getOrDefault(key, 0) val) {return false;}}return true;} }面试公司
http://www.w-s-a.com/news/248255/

相关文章:

  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业
  • 中山网站建设文化外贸公司的网站建设模板
  • 美食网站开发开题报告wordpress第三方支付接口
  • 有哪些网站可以卖自己做的图片简洁大方的网站首页
  • 四川建设网电子招投标网站网站酷站
  • 凯里网站建设如何收费网站建设php怎么安装
  • 网站建设专业网站设计公司物格网一站式建站价格
  • seo网站培训优化怎么做如何给网站做下载附件
  • php网站建设文献综述怎么样提高网站排名
  • 专用车网站建设wordpress半透明
  • 石狮网站建设哪家好wordpress 3.9 漏洞
  • 为何建设单位网站找网络推广策畿
  • 用网站模板做网站动漫制作专业学校前十名
  • 网页 代码怎么做网站网站建设与维护课程设计
  • 网站制作哪家公司好企业名录联系电话
  • 做的网站怎么上传到网上wordpress图片之间空一行