Skip to content

Latest commit

 

History

History
47 lines (41 loc) · 1.24 KB

Question_567.md

File metadata and controls

47 lines (41 loc) · 1.24 KB

LeetCode Records - Question 567 Permutation in String

Attempt 1: Use an int[] to store the character counts for each substring

class Solution {
    public boolean checkInclusion(String s1, String s2) {
        char[] arr1 = s1.toCharArray();
        char[] arr2 = s2.toCharArray();
        if (arr1.length > arr2.length) {
            return false;
        }

        int[] counts1 = new int[26];
        int[] counts2 = new int[26];
        for (int i = 0; i < arr1.length; i++) {
            counts1[arr1[i] - 'a']++;
            counts2[arr2[i] - 'a']++;
        }
        if (isEqual(counts1, counts2)) {
            return true;
        }

        for (int i = arr1.length; i < arr2.length; i++) {
            counts2[arr2[i] - 'a']++;
            counts2[arr2[i - arr1.length] - 'a']--;
            if (isEqual(counts1, counts2)) {
                return true;
            }
        }
        
        return false;
    }

    private boolean isEqual(int[] counts1, int[] counts2) {
        for (int i = 0; i < 26; i++) {
            if (counts1[i] != counts2[i]) {
                return false;
            }
        }
        return true;
    }
}
  • Runtime: 4 ms (Beats: 99.16%)
  • Memory: 42.57 MB (Beats: 76.47%)