找到字符串中所有字母异位词

题目链接

https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/

解题思路

最小覆盖字串 简单
无非是本题要保持区间[L,R]长度为p的长度,判断这个区间是否满足。

AC代码

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        map<char,int> cnt;
        vector<int> v;
        int n=s.size(),m=p.size(),L=1,num=0,count=0,ans[20200];

        s='.'+s;p='.'+p;
        for(int i=1;i<=m;i++) cnt[p[i]]++;

        for(int R=1;R<=n;R++) {
            if(--cnt[s[R]]>=0) ++count;
            if(count==m) ans[++num]=L;//先判断是否满足
            if(R-L+1==m) if(++cnt[s[L]]>0) --count;//再判断是否需要--//二者次序不可换
            if(R-L+1>=m) L++;//让区间[L,R]长度保持为p的长度,除了刚开始
        }

        for(int i=1;i<=num;i++) v.push_back(ans[i]-1);
        return v;
    }
};
全部评论

相关推荐

程序员小白条:太晚了,看别人找到实习了才投的话,自己本身就没啥准备,计划太晚咯,只能吞苦果子
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务