From f171e6504cb8c933f6852a4fa3e3aceebdfc600f Mon Sep 17 00:00:00 2001 From: kkunkka Date: Mon, 24 Mar 2025 15:04:48 +0800 Subject: [PATCH] kk --- .../dota/slidingWindow/_1297/Solution.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/com/dota/slidingWindow/_1297/Solution.java 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