Skip to content

Commit 31bc870

Browse files
committed
Update 1297_Maximum_Number_of_Occurrences_of_a_Substring.java
1 parent 606b5c7 commit 31bc870

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed
Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
class Solution {
22
public int maxFreq(String s, int maxLetters, int minSize, int maxSize) {
33
int result = 0;
4-
Map<Character, Integer> cMap = new HashMap<>();
5-
Map<String, Integer> sMap = new HashMap<>();
4+
Map<String, Integer> freq = new HashMap<>();
65

7-
for (int i = 0, j = 0; j < s.length(); j++) {
8-
char c = s.charAt(j);
9-
cMap.put(c, cMap.getOrDefault(c, 0) + 1);
6+
for (int i = 0; i < s.length() - minSize + 1; i++) {
7+
String str = s.substring(i, i + minSize);
108

11-
if (j - i + 1 > minSize) {
12-
char l = s.charAt(i);
13-
cMap.put(l, cMap.get(l) - 1);
9+
if (isValid(str, maxLetters)) {
10+
freq.put(str, freq.getOrDefault(str, 0) + 1);
11+
result = Math.max(result, freq.get(str));
12+
}
13+
}
1414

15-
if (cMap.get(l) == 0) {
16-
cMap.remove(l);
17-
}
15+
return result;
16+
}
1817

19-
++i;
20-
}
18+
private boolean isValid(String s, int maxLetters) {
19+
Set<Character> set = new HashSet<>();
2120

22-
if (j - i + 1 >= minSize && cMap.size() <= maxLetters) {
23-
String str = s.substring(i, j + 1);
24-
sMap.put(str, sMap.getOrDefault(str, 0) + 1);
25-
result = Math.max(result, sMap.get(str));
26-
}
21+
for (char c : s.toCharArray()) {
22+
set.add(c);
2723
}
2824

29-
return result;
25+
return set.size() <= maxLetters;
3026
}
3127
}

0 commit comments

Comments
 (0)