帮我用java写个滑动窗口算法
时间: 2023-08-04 21:12:02 浏览: 84
当然可以。滑动窗口算法可以用于解决一些字符串/数组相关的问题,例如查找子串、子序列等。下面是一个简单的滑动窗口算法实现,用于在一个字符串中查找长度为n的子串中出现次数最多的字符:
```java
public static char findMaxOccurringChar(String str, int n) {
int[] count = new int[256];
int max_count = 0;
char max_char = '\0';
int window_start = 0;
for (int window_end = 0; window_end < str.length(); window_end++) {
count[str.charAt(window_end)]++;
if (window_end - window_start + 1 == n) {
if (max_count < count[str.charAt(window_start)]) {
max_count = count[str.charAt(window_start)];
max_char = str.charAt(window_start);
}
count[str.charAt(window_start)]--;
window_start++;
}
}
return max_char;
}
```
这个算法的思路是维护一个长度为n的滑动窗口,每次向右移动一位,同时更新窗口内字符出现次数的计数器。如果窗口大小达到了n,就更新最大出现次数和对应的字符,并将窗口左端点向右移动一位,同时减少左端点字符的出现次数。最后返回最大出现次数的字符即可。
阅读全文