• 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;
        }
    }
    
  • 相关阅读:
    mac前端解除端口占用命令
    Mac安装Brew
    Mac Webstrom 快捷键
    linux yarn安装
    js-新兴的API,最佳实践,离线应用于客户端存储
    js-高级技术
    js-Ajax与Comet
    js-错误处理与调试,JSON
    js-DOM2,表单脚本
    js-事件
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075410.html
Copyright © 2020-2023  润新知