diff --git a/src/main/java/com/dota/slidingWindow/_1297/Solution.java b/src/main/java/com/dota/slidingWindow/_1297/Solution.java new file mode 100644 index 0000000..609f1ec --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1297/Solution.java @@ -0,0 +1,47 @@ +package com.dota.slidingWindow._1297; + +import java.util.HashMap; + +class Solution { + public int maxFreq(String s, int maxLetters, int minSize, int maxSize) { + int max = 0; + var dp = new int[26]; + + int cnt = 0;//字母数 + var map = new HashMap();//出现数量 + for (int i = 0; i < minSize; i++) { + int t = s.charAt(i) - 'a'; + if (dp[t] == 0) { + cnt++; + } + dp[t]++; + } + if (cnt<=maxLetters) { + map.put(s.substring(0, minSize), 1); + max = 1; + } + + for (int i = minSize; i < s.length(); i++) { + int t = s.charAt(i-minSize) - 'a'; + if (dp[t] == 1) { + cnt--; + } + dp[t]--; + + t = s.charAt(i) - 'a'; + if (dp[t] == 0) { + cnt++; + } + dp[t]++; + + if (cnt<=maxLetters) { + var tmp = s.substring(i-minSize, i+1); + map.put(tmp, map.getOrDefault(tmp, 0)+1); + max = Math.max(max, map.get(tmp)); + } + } + + + return max; + } +} \ No newline at end of file