JasonChang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  174 随笔 :: 0 文章 :: 0 评论 :: 30096 阅读
复制代码
 1 public class Solution {
 2     public String minWindow(String S, String T) {
 3         // IMPORTANT: Please reset any member data you declared, as
 4         // the same Solution instance will be reused for each test case.
 5         if (S == null || T == null || S.length() == 0 || T.length() == 0) {
 6             return "";
 7         }
 8         int[] needToFind = new int[256];
 9         int[] hasFound = new int[256];
10 
11         for (int i = 0; i < T.length(); i++) {
12             needToFind[T.charAt(i)]++;
13         }
14 
15         int minWinLen = Integer.MAX_VALUE;
16         int count = 0, tLen = T.length();
17         int winBeg = 0, winEnd = 0;
18         for (int begin = 0, end = 0; end < S.length(); end++) {
19             if (needToFind[S.charAt(end)] == 0) {
20                 continue;
21             }
22             hasFound[S.charAt(end)]++;
23             if(hasFound[S.charAt(end)] <= needToFind[S.charAt(end)]){
24                 count ++;
25             }
26             
27             if(count == tLen){
28                 while(needToFind[S.charAt(begin)] == 0 ||
29                         hasFound[S.charAt(begin)] > needToFind[S.charAt(begin)]){
30                     if(hasFound[S.charAt(begin)] > needToFind[S.charAt(begin)]){
31                         hasFound[S.charAt(begin)]--;
32                     }
33                     begin ++;
34                 }
35                 
36                 int winLen = end - begin + 1;
37                 if(winLen < minWinLen){
38                     winBeg = begin;
39                     winEnd = end;
40                     minWinLen = winLen;
41                 }
42             }
43         }
44 
45         if (count == T.length()) {
46             return S.substring(winBeg, winEnd + 1);
47         }
48 
49         return "";
50     }
51 }
复制代码

 

posted on   JasonChang  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示