• Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)


    567. 字符串的排列

    给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。

    换句话说,第一个字符串的排列之一是第二个字符串的子串。

    示例1:

    输入: s1 = “ab” s2 = “eidbaooo”
    输出: True
    解释: s2 包含 s1 的排列之一 (“ba”).

    示例2:

    输入: s1= “ab” s2 = “eidboaoo”
    输出: False

    注意:

    输入的字符串只包含小写字母
    两个字符串的长度都在 [1, 10,000] 之间

    class Solution {
         public boolean checkInclusion(String s1, String s2) {
            if(s2.length()<s1.length())return false;
    
            int[] book=new int[26];
            for (int i=0;i<s1.length();i++)
            {
                book[s1.charAt(i)-'a']++;
            }
    
            int[] book1=new int[26];
            for (int i=0;i<s1.length();i++)
            {
                book1[s2.charAt(i)-'a']++;
            }
            if(check(book,book1))return true;
    
            int left=0,right=s1.length();
            while (right<s2.length())
            {
                book1[s2.charAt(left++)-'a']--;
                book1[s2.charAt(right++)-'a']++;
                if(check(book,book1))return true;
            }
    
            return false;
        }
    
        private boolean check(int[] book, int[] book1) {
            for (int i=0;i<26;i++)
            {
                if(book[i]!=book1[i])return false;
            }
            return true;
        }
    }
    
  • 相关阅读:
    965. 单值二叉树
    面试题 04.09. 二叉搜索树序列
    99. 恢复二叉搜索树
    98. 验证二叉搜索树
    centos6版本下的Python2.6升级到2.7
    操作MySQL-数据库的安装及Pycharm模块的导入
    操作微信-itchat库的安装
    2018中科大hackergame
    png图片IDAT块异常
    2018网鼎杯misc
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075410.html
Copyright © 2020-2023  润新知