最小子串

在给定的字符串source中找到包含目标字符串target所有字母的最小子串,若存在多个符合条件的子串,则返回起始位置最小的一个。代码已给出,并通过测试,无需详细解释算法步骤。
摘要由CSDN通过智能技术生成

求最小子串

给定一个字符串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 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值