java的滑动窗口怎么做
时间: 2023-07-06 12:43:32 浏览: 124
java实现滑动按钮
滑动窗口是一种常用的算法,可以用于求解很多的数组和字符串问题。下面是一个 Java 代码示例,演示了如何使用滑动窗口算法来解决一个字符串问题:
假设我们有一个字符串 s,和一个整数 k,现在要求找出 s 中长度为 k 的不重复子串的个数。
```java
public int countUniqueSubstrings(String s, int k) {
int len = s.length();
if (len < k) {
return 0;
}
int[] count = new int[26];
int unique = 0;
int left = 0;
int right = 0;
int res = 0;
while (right < len) {
int r = s.charAt(right) - 'a';
count[r]++;
if (count[r] == 1) {
unique++;
}
if (right - left + 1 > k) {
int l = s.charAt(left) - 'a';
count[l]--;
if (count[l] == 0) {
unique--;
}
left++;
}
if (right - left + 1 == k && unique == k) {
res++;
}
right++;
}
return res;
}
```
在上面的代码中,我们使用了一个数组 count 来记录当前窗口中每个字符出现的次数,用 unique 变量来记录当前窗口中有多少个不同的字符。left 和 right 分别表示窗口的左右边界,res 变量用来记录不重复子串的个数。
我们依次向右移动右边界 right,如果当前字符 s[right] 是一个新字符,那么就将 unique 增加 1,否则不需要做任何操作。如果当前窗口的大小超过了 k,那么就需要将左边界 left 向右移动一位,此时需要根据移动后的字符 s[left] 来更新 count 数组和 unique 变量。如果当前窗口的大小等于 k,且 unique 等于 k,那么就找到了一个新的不重复子串,将 res 值加 1。
希望这个例子对您有所帮助。
阅读全文