字符串问题之 最小包含子串长度
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); } }