字符串問題之 最小包含子串長度


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);
        
        
    }
    
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM