企业建设营销网站的基本步骤,郑州网站优化渠道,亚马逊服务器建wordpress,做静态网站d给你一个字符串 S、一个字符串 T#xff0c;请在字符串 S 里面找出#xff1a;包含 T 所有字母的最小子串。
示例#xff1a;
输入: S ADOBECODEBANC, T ABC 输出: BANC 说明#xff1a;
如果 S 中不存这样的子串#xff0c;则返…给你一个字符串 S、一个字符串 T请在字符串 S 里面找出包含 T 所有字母的最小子串。
示例
输入: S ADOBECODEBANC, T ABC 输出: BANC 说明
如果 S 中不存这样的子串则返回空字符串 。 如果 S 中存在这样的子串我们保证它是唯一的答案。
提交的代码
class Solution { public String minWindow(String s, String t) { MapCharacter, Integer map new HashMap(); for (char c : s.toCharArray()) map.put(c, 0); //初始化s的字符全部为key-0 for (char c : t.toCharArray()) { if (map.containsKey(c)) { map.put(c, map.get(c) 1); //t中出现的字符数 key-int } else { return ; } } String result ; //记录需要被匹配的次数 int count t.length(); int right 0; int left 0; while (right s.length()) { char c s.charAt(right); //将字符进行匹配 if (map.get(c) 0) { count--; } map.put(c, map.get(c) - 1); right; while (count 0) { //替换最小结果 if(result.length() 0){ result s.substring(left, right); }else if (result.length() (right - left)) { result s.substring(left, right); } //移动左指针 char c1 s.charAt(left); if (map.get(c1) 0) { //是0说明是t中的字符否则是负数 count; } map.put(c1, map.get(c1) 1); left; } } return result; }
}