- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNo76.java
62 lines (53 loc) · 1.89 KB
/
No76.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
packageString;
importjava.util.HashMap;
importjava.util.Map;
/**
* @author tujietg
* @date 5/23/20 1:03 PM
*/
publicclassNo76 {
publicstaticStringminWindow(Strings, Stringt) {
intsLen = s.length();
intstart = -1;
intend = sLen - 1;
char[] tChars = t.toCharArray();
char[] sChars = s.toCharArray();
if (s.length() < t.length()) {
return"";
}
Map<Character, Integer> tMap = newHashMap<>(t.length());
for (inti = 0; i < tChars.length; i++) {
tMap.put(tChars[i], tMap.getOrDefault(tChars[i], 0) + 1);
}
for (inti = 0; i < sLen; i++) {
for (intj = i; j < sLen; j++) {
Stringsubstring = s.substring(i, j + 1);
HashMap<Character, Integer> characterIntegerHashMap = newHashMap<>(t.length());
characterIntegerHashMap.putAll(tMap);
if (check(characterIntegerHashMap, substring.toCharArray()) == true) {
if (j - i <= end - start) {
end = j;
start = i;
j = sLen;
while (!tMap.containsKey(sChars[i]) && i < sLen && !tMap.containsKey(sChars[i + 1])) {
i++;
}
}
}
}
}
returnstart == -1 ? "" : s.substring(start, end + 1);
}
privatestaticbooleancheck(Map<Character, Integer> midMap, char[] sChars) {
for (inti = 0; i < sChars.length; i++) {
if (midMap.containsKey(sChars[i])) {
if (midMap.get(sChars[i]).equals(1)) {
midMap.remove(sChars[i]);
} else {
midMap.put(sChars[i], midMap.get(sChars[i]) - 1);
}
}
}
returnmidMap.size() == 0;
}
}