JAVA minimum-window-substring
public class Test {
public static void main(String[] args) {
String orgStr = "ADOBECODEBANC";
String findStr = "ABC";
String resStr = "";
int maxLength = orgStr.length();
int count = findStr.length();
HashMap<Character, Integer> findHashMap = new HashMap<>();
for (int i = 0; i < findStr.length(); i++) {
if( findHashMap.containsKey(findStr.charAt(i))){
findHashMap.put( findStr.charAt(i), findHashMap.get(findStr.charAt(i))+1 );
}else{
findHashMap.put( findStr.charAt(i),1 );
}
}
Character curChar = null , leftChar ;
for( int j =0 , left = 0 ; j < orgStr.length(); j++ ){
curChar = orgStr.charAt(j);
if( findHashMap.containsKey(curChar) ){
findHashMap.put(curChar,findHashMap.get(curChar) -1 );
if( findHashMap.get(curChar) == 0 ){
count--;
}
}
while( count == 0 ){
if( j - left < maxLength ){
resStr = orgStr.substring(left, j+1);
maxLength = (j - left);
}
leftChar = orgStr.charAt(left);
if( findHashMap.containsKey(leftChar) ){
findHashMap.put(leftChar, findHashMap.get(leftChar)+1);
if( findHashMap.get(leftChar) > 0){
count++;
}
}
left++;
}
}
System.out.println(resStr);
}
}
生命只有一次。

浙公网安备 33010602011771号