美文网首页
2021.2.10每日一题

2021.2.10每日一题

作者: Yaan9 | 来源:发表于2021-02-10 09:56 被阅读0次

567. 字符串的排列

给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例1:
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例2:
输入: s1= "ab" s2 = "eidboaoo"
输出: False
注意:
输入的字符串只包含小写字母
两个字符串的长度都在 [1, 10,000] 之间

题解

首先理解子串的概念:字符串中任意个连续的字符组成的子序列称为该串的子串。题目要求判断字符串s1的排列是否为字符串s2的子串,那么可以得出:若是子串,那么字符串s2中存在一个子串,其长度与字符串s1相等,并且子串中每个字符出现的次数与s1相等。
这里使用双指针的解法:定义left,right两个指针,维护一个[left,right]区间,在保证区间内每个字符出现的次数不大于s1每个字符出现的次数的条件下,寻找是否存在一个区间,长度等于s1的长度。

    public boolean checkInclusion(String s1, String s2) {
        int n = s1.length();
        int m = s2.length();
        if (n > m) return false;
        int[] count1 = new int[26];    //记录s1各字符出现次数
        int[] count2 = new int[26];    //记录s2各字符出现次数
        for (int i = 0; i < n; i++) {
            count1[s1.charAt(i) - 'a']++;
        }
        int left = 0;
        int right = 0;
        while(right < m){
            char cur = s2.charAt(right);
            int index = cur - 'a';
            count2[index]++;
            while (count2[index] > count1[index]) { //字符频率不同,区间左侧右移
                count2[s2.charAt(left) - 'a']--;//区间最左侧被移出
                left++;
            }
            if (right - left + 1 == n) return true;  //若符合条件,直接返回
            right++;
        }
        return false;
    }

相关文章

  • 2021.2.10每日一题

    567. 字符串的排列[https://leetcode-cn.com/problems/permutation-...

  • Day 4 Project 我的微信好友

    附:每日一题

  • 每日复盘分享

    90/Day21/有效学习,从每日复盘分享开始 2021.2.10关键词:简历筛选、遵循要点 【招聘管理篇】招聘前...

  • 2021.2.10

    早上好!一天又一天接踵而至,还来不及收拾昨天的一切,又要准备迎接新的一天。被时间这样一天一天推着走,转眼就推到年关...

  • 2021.2.10

    点了星满杯,送到已经太冷了,用热水温了温。自己动手,丰衣足食~

  • 2021.2.10

    昨天做了一个漫长的梦,我一遍一遍地想要回忆起一些细节,但是却不能,使得我睡了很久很久。 早饭和午饭是一起吃的,红豆...

  • 2021.2.10

    上午搞卫生,桃桃一个人在围栏里一会儿看书,一会儿玩玩具,一个人玩得很好,真是个乖崽。 中午洗了碗过去围栏看她,竟然...

  • 2021.2.10

    干了一票大的 基本提完了K3之前所有标本 明侦看完再出发 拿标本淋雨回学院又拿标本 所有坏情绪都能被红色打败 明天...

  • 2021.2.10

    一二三 我正在宿舍看电影,放松下。学习任务在白天都完成了。 感受生命,享受当下。 晚安。 晓寒

  • 2021.2.10

    明天就是除夕了,冰冷而寂静的花港路上一片苍白,这里没有任何节日到来的氛围布置,凄冷的工厂孤苦的亮着一两盏灯。 谁也...

网友评论

      本文标题:2021.2.10每日一题

      本文链接:https://www.haomeiwen.com/subject/wlsfxltx.html