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

题目链接

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;
    }
};
全部评论

相关推荐

12-24 14:26
东北大学 Java
一只乌鸦:重邮+东北,好经典的学校
最后再改一次简历
点赞 评论 收藏
分享
12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
985本硕1个中小厂of...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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