x

Permutation in String

Leetcode #567 | Medium | O(26) | Скользящее окно

Идея

Фиксированное скользящее окно, двигаем l пока длина не s1.length(). Опять идея бакетов за O(26). Сравнение temp и исходного массива частот за O(26).

Big-O

  • Время O(N)
  • Память O(1)

Код

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;
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x