zoukankan      html  css  js  c++  java
  • 567. Permutation in String【滑动窗口】

    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:

    The input strings only contain lower case letters.
    The length of both given strings is in range [1, 10,000].


    class Solution {
        public boolean checkInclusion(String s1, String s2) {
            if (s1 == null || s2 == null || s1.length() > s2.length()) {
                return false;
            }
            int l1 = s1.length();
            int l2 = s2.length();
            int[] c1 = new int[26];
            int[] c2 = new int[26];
            for(char c : s1.toCharArray()){
                c1[c-'a']++;
            }
            for(int i=0; i<l2; i++){
                if(i>=l1){
                    c2[s2.charAt(i-l1)-'a']--;
                }
                c2[s2.charAt(i)-'a']++;
                if(Arrays.equals(c1,c2)){
                    return true;
                }
            }
            return false;
        }
    }
    
  • 相关阅读:
    19-10-31-B
    19-10-30-Night-V
    19-10-30-C
    19-10-29-Night-X
    19-10-29-Z
    19-10-28-A
    19-10-27-S
    19-10-26-Night-D
    留言板
    优秀博客存档
  • 原文地址:https://www.cnblogs.com/Roni-i/p/11222403.html
Copyright © 2011-2022 走看看