26 lines
968 B
Markdown
26 lines
968 B
Markdown
Leetcode #567 | #Medium | [[O(26)]] | [[Скользящее окно]]
|
|
## Идея
|
|
Фиксированное скользящее окно, двигаем l пока длина не s1.length(). Опять идея бакетов за O(26). Сравнение temp и исходного массива частот за O(26).
|
|
## [[Big-O]]
|
|
- Время ```O(N)```
|
|
- Память ```O(1)```
|
|
## Код
|
|
```Java
|
|
class Solution {
|
|
public boolean checkInclusion(String s1, String s2) {
|
|
if (s1.length() > s2.length()) return false;
|
|
int[] b1 = new int[26], b2 = new int[26];
|
|
for (char c : s1.toCharArray()) b1[c - 'a']++;
|
|
int l = 0;
|
|
for (int r = 0; r < s2.length(); r++) {
|
|
b2[s2.charAt(r) - 'a']++;
|
|
while (r - l + 1 > s1.length()) {
|
|
b2[s2.charAt(l) - 'a']--;
|
|
l++;
|
|
}
|
|
if (Arrays.equals(b1, b2)) return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
``` |