最小覆盖子串
来源:互联网 发布:淘宝是马云还是日本人 编辑:程序博客网 时间:2024/05/19 17:27
参考
import java.util.HashMap;import java.util.Map;public class Solution { public String minWindow(String s, String t) { HashMap<Character, Integer> tp = new HashMap<>(); HashMap<Character, Integer> sp = new HashMap<>(); for (int i = 0, len = t.length(); i < len; i++) { Character ch = t.charAt(i); tp.put(ch, (tp.get(ch) == null ? 0 : tp.get(ch)) + 1); } int left = 0, right = 0; sp.put(s.charAt(left), 1); String ans = null; while (left <= right) { if (contains(tp, sp)) { while (left <= right && contains(tp, sp)) { Character ch = s.charAt(left++); if (sp.get(ch) == 1) sp.remove(ch); else sp.put(ch, sp.get(ch) - 1); } if (ans == null || ans.length() > right - (left - 1) + 1) { ans = s.substring(left - 1, right + 1); } } else { right++; if (right >= s.length()) return ans == null ? "" : ans; Character newKey = s.charAt(right); sp.put(newKey, (sp.get(newKey) == null ? 0 : sp.get(newKey)) + 1); } } return ans == null ? "" : ans; } public boolean contains(HashMap<Character, Integer> a, HashMap<Character, Integer> b) { for (Map.Entry<Character, Integer> entry : a.entrySet()) { Character key = entry.getKey(); Integer value = entry.getValue(); if (b.containsKey(key) && b.get(key) != null && b.get(key) >= value) { continue; } else { return false; } } return true; }}
0 0
- 最小覆盖子串
- 最小子串覆盖
- 最小覆盖子串
- 最小子串覆盖
- 最小子串覆盖
- 最小子串覆盖
- 最小子串覆盖
- 最小覆盖子串 KMP
- LintCode:最小子串覆盖
- 【t011】最小覆盖子串
- Lintcode 最小子串覆盖
- lintcode--最小子串覆盖
- KMP与最小覆盖子串
- KMP与最小覆盖子串
- 最小覆盖子串的长度
- KMP与最小覆盖子串
- [ZZ]最小覆盖子串算法
- lintcode-最小子串覆盖-32
- Android getevent sentevent input命令使用
- adg上配置OGG
- python dict 按key排序
- hdu--1863畅通工程2(典型的最小生成树)prim算法
- Golang 基础 JSON
- 最小覆盖子串
- Windows下weblogic负载均衡
- Git教程
- (4.2.36.1)HTTP之OkHttp(一): Okhttp使用详解
- 关于SPCOMM使用中碰到的问题
- jquery中each循环常见问题
- 分页
- 第24个python程序:更多练习
- LintCode-拓扑排序