给定一个字符串 和一个非空字符串 p,找到 中所有是 的字母异位词的子串,返回这些子串的起始索引。

字符串只包含小写英文字母,并且字符串 和 的长度都不超过 20100。

说明:

  • 字母异位词指字母相同,但排列不同的字符串。
  • 不考虑答案输出的顺序。

示例 1:

输入:
s: "cbaebabacd" p: "abc"输出:
[0, 6]解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的字母异位词。

 示例 2:

输入:
s: "abab" p: "ab"输出:
[0, 1, 2]解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的字母异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的字母异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的字母异位词。

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        if (s.empty()) return {};
        vector<int> res, cnt(128, 0);
        int ns = s.size(), np = p.size(), i = 0;
        for (char c : p) ++cnt[c];
        while (i < ns) {
            bool success = true;
            vector<int> tmp = cnt;
            for (int j = i; j < i + np; ++j) {
                if (--tmp[s[j]] < 0) {
                    success = false;
                    break;
                }
            }
            if (success) {
                res.push_back(i); 
            }
            ++i;
        }
        return res;
    }
};

438.找到字符串中所有字母异位词相关推荐

  1. 【LeetCode】【HOT】438. 找到字符串中所有字母异位词(滑动窗口)

    [LeetCode][HOT]438. 找到字符串中所有字母异位词 文章目录 [LeetCode][HOT]438. 找到字符串中所有字母异位词 package hot;import java.uti ...

  2. 438. 找到字符串中所有字母异位词【异位词-哈希数组】

    438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括 ...

  3. Java实现 LeetCode 438 找到字符串中所有字母异位词

    438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...

  4. 438. 找到字符串中所有字母异位词【我亦无他唯手熟尔】

    438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题解 官方 438. 找到字符串中所有字母异位词 难度 中等 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 ...

  5. LeetCode 438. 找到字符串中所有字母异位词(滑动窗口)

    1. 题目 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100 ...

  6. LeetCode 438. 找到字符串中所有字母异位词(双指针+滑动窗口)

    题目描述 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. ...

  7. leetcode刷题(91)——438. 找到字符串中所有字母异位词

    给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. 说明: ...

  8. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十七天 题目链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/ 题解汇总:https:// ...

  9. LeetCode:438. 找到字符串中所有字母异位词(简单易懂)

    一.题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引.不考虑答案输出的顺序. 异位词 指由相同字母重排列形成的字符串(包括相同的字符串). 示例 ...

  10. leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)

    题目 https://leetcode.com/problems/find-all-anagrams-in-a-string/ 题解 方法1:尝试构造一种"与顺序无关的哈希" 思考 ...

最新文章

  1. 全职奶爸的一年深度学习之路:从零基础到成为研究科学家
  2. emmet中文文档 (转载)
  3. java属性修改前后_java 记录对象前后修改的内容(工具类)
  4. css中如何修改鼠标光标(指针)的样式和颜色
  5. 如何在移动设备上以开发模式访问SAP Spartacus
  6. React开发(166):ant design form 设置值
  7. HTTP405: 错误方法 - 不支持使用的 HTTP 谓词。
  8. docker 定时重启脚本_群晖Docker容器定时执行重启任务
  9. 网页加速优化简单总结
  10. python合并单元格出现:‘MergedCell‘ object attribute ‘value‘ is read-only 如何处理
  11. 2020家用千兆路由器哪款好_家用千兆路由器哪款好(2020年千兆路由器排行榜)...
  12. 宝塔面板本地调试网站提示域名解析错误的问题
  13. matlab怎么把音频变成信号_利用MATLAB软件对音频信号进行频谱分析及处理.doc
  14. [CF1603D]Artistic Partition
  15. 感觉自己成长慢,单点突破可以让你成长快10倍
  16. Ubuntu 系统中网络总是断掉重新连接
  17. 有关channel的相关知识(2)
  18. OmniGraffle 7.2 for Mac
  19. ApkTool(Apk反编译工具)电脑版
  20. 基于mediapipe和opencv的手势控制电脑鼠标

热门文章

  1. 为什么微软应该通过收购Docker来与Kubernetes竞争
  2. 持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)
  3. display:table-cell 在页面中的应用
  4. InstallShield 12 制作安装包
  5. sql常用语句集合(工作总结)
  6. ConceptDraw Office Pro v8.0.2 Keygen
  7. java webservice 示例,Java webservice 示例
  8. 通过反射认识泛型的本质
  9. 5月份鸿蒙升级时间,事关所有华为手机用户,鸿蒙正式升级时间终于确定
  10. python输入输出格式_Python基础-用户的输入及格式化输出 | 【韩涛博客】