public static List<Integer> subSequenceTags(List<String> targetList, List<String> availableTagList){
List<Integer> ret = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
for(String tag : targetList){
String tg = tag.toLowerCase();
map.put(tg, map.getOrDefault(tg, 0) + 1);
}
int start = 0, end = 0, counter = targetList.size(), retStart = 0, retEnd = availableTagList.size();. from: 1point3acres.com/bbs
while(end < availableTagList.size()){
String cur = availableTagList.get(end++).toLowerCase();
map.put(cur, map.getOrDefault(cur, 0) - 1);
if(map.getOrDefault(cur, 0) >= 0) counter--;
while(counter==0){
if(end-start < retEnd-retStart+1) {
retStart = start;
retEnd = end-1;
}. 1point 3acres 璁哄潧
cur = availableTagList.get(start++).toLowerCase();
map.put(cur, map.getOrDefault(cur, 0) + 1);
if(map.get(cur) > 0) counter++;. 鐣欏鐢宠璁哄潧-涓€浜╀笁鍒嗗湴
}
}
ret.add(retStart); ret.add(retEnd);
return ret;
}