[LeetCode 567] Permutation Strin

2019-07-09  本文已影响0人  灰睛眼蓝

Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string's permutations is the substring of the second string.

Example 1:

Input: s1 = "ab" s2 = "eidbaooo"
Output: True
Explanation: s2 contains one permutation of s1 ("ba").

Example 2:

Input:s1= "ab" s2 = "eidboaoo"
Output: False

Note:

class Solution {
    public boolean checkInclusion(String s1, String s2) {
        if (s2 == null || s2.length () == 0 || s1.length () > s2.length ()) {
            return false;
        }
        
        int[] tracker = new int[26];
        int lenS1 = s1.length ();
        int lenS2 = s2.length ();
        
        for (int i = 0; i < lenS1; i++) {
            tracker[s1.charAt (i) - 'a'] ++;
            tracker[s2.charAt (i) - 'a'] --;
        }
        
        if (isAllZero (tracker)) {
            return true;
        }
        
        for (int i = lenS1; i < lenS2; i++) {
            tracker[s2.charAt (i) - 'a'] --;
            tracker[s2.charAt (i - lenS1) - 'a'] ++;
            
            if (isAllZero (tracker)) {
                return true;
            }
        }
        
        return false;
    }
    
    private boolean isAllZero (int[] tracker) {
        for (int num : tracker) {
            if (num != 0) {
                return false;
            }
        }
        
        return true;
    }
}
上一篇下一篇

猜你喜欢

热点阅读