求最小子串
给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。
注意事项
如果在source中没有这样的子串,返回”“,如果有多个这样的子串,返回起始位置最小的子串。
说明
在答案的子串中的字母在目标字符串中不需要具有相同的顺序
样例
给出source = “ADOBECODEBANC”,target = “ABC” 满足要求的解 “BANC”
代码
import java.util.Scanner;
/**
* @ClassName: LeastSubString
* @Description: 求字符串A中包含B的最小子串--------时间复杂度O(n)
* 如:A{ADOBECODEBANC},B{ABC},则最小子串为BANC
* @author kooking
* @date 2018年9月8日 下午10:03:45
*/
//1、先记录下目标字符串B中每个字符的出现的次数
//2、遍历字符串A:
// 2.1、count记录匹配字符的数量,每当匹配一个加一,当count==B的长度时则认为找到最小子串
// min记录最小子串长度,minString记录最小子串
// start代表最小子串的起始下标,end代表最小子串的结束下标
// 2.2、找到最小子串后,尝试将最小子串缩小(只能移动start)
// 2.3、继续往后移动:start往后移动一位,并且count减一,继续寻找最小子串
public class LeastSubString {
public static String