码迷,mamicode.com
首页 > 其他好文 > 详细

字符串问题之 最小包含子串长度

时间:2017-08-22 23:10:48      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:value   print   str   pre   logs   字符   return   ati   最小   

str1 和 str2  求str1 的子串 中含有str2 的所有字符的最小字串长度

   例如: 

 str1 ="abcde"

 str2="ac"    返回3

本题适合用还款方法  str1 去还 str2 里面的元素

package TT;

public class Test7 {

    public static int minLength(String str1, String str2){
          
        if(str1 == null || str2 == null || str1.length() < str2.length()){
            return 0;
        }
        char[] chas1 =  str1.toCharArray();
        char[] chas2 =  str2.toCharArray();
        int[] map = new int[256];
        
        for(int i = 0; i!=chas2.length;i++){
            map[chas2[i]]++;
        }
        
        int left = 0;
        int right = 0;
        int match = chas2.length;
        int minLen = Integer.MAX_VALUE;
        
        while(right != chas1.length){
            
            map[chas1[right]]--;
            if(map[chas1[right]] >=0){
                 match--;
            }
            if(match==0){
                
                while(map[chas1[left]]<0){
                    map[chas1[left++]]++;
                }
                
                minLen = Math.min(minLen, right-left+1);
                match++;
                map[chas1[left++]]++;
            }
            right++;
        }
        
        return minLen == Integer.MAX_VALUE ? 0 :minLen;
        
    }
    
    
    
    public static void main(String[] args){
        
         String str1 ="abcde";
         String str2 = "ac";
         int a  =  minLength(str1, str2);
         System.out.println(a);
        
        
    }
    
    
}

 

字符串问题之 最小包含子串长度

标签:value   print   str   pre   logs   字符   return   ati   最小   

原文地址:http://www.cnblogs.com/toov5/p/7413645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!