给定一个字符串 和一个非空字符串 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" 的字母异位词。

参考:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/solution/hua-dong-chuang-kou-tong-yong-si-xiang-jie-jue-zi-/

class Solution {
public:vector<int> findAnagrams(string s, string t) {unordered_map<char, int> need, window;for (char c : t) need[c]++;int left = 0, right = 0;int valid = 0;vector<int> res; // 记录结果while (right < s.size()) {char c = s[right];right++;// 进行窗口内数据的一系列更新if (need.count(c)) {window[c]++;if (window[c] == need[c]) valid++;}// 判断左侧窗口是否要收缩while (right - left >= t.size()) {// 当窗口符合条件时,把起始索引加入 resif (valid == need.size())res.push_back(left);char d = s[left];left++;// 进行窗口内数据的一系列更新if (need.count(d)) {if (window[d] == need[d])valid--;window[d]--;}}}return res;}
};

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

  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. iOS LeetCode ☞ 找到字符串中所有字母异位词

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

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

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

  6. mfc 找到字符串中字符_利用滑动窗口解LeetCode438题:找到字符串中所有字母异位词...

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

  7. Leetcode--438. 找到字符串中所有字母异位词

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

  8. LeetCode-438. 找到字符串中所有字母异位词

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

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

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

最新文章

  1. ImageView / Text 使用 android:state_pressed 没有效果的处理方法
  2. inputAccessoryView,inputView
  3. [转]hibernate------HQL总结
  4. oa系统登录后几分钟自动退出_2020版OA办公系统正式上线运行!
  5. 软件测试第二次作业:JUNIT单元测试方法
  6. struct和class内存大小的计算
  7. 数据中心成为生态系统向绿色氢经济转变的催化剂
  8. 132. 小组队列【队列 模拟】
  9. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
  10. android 6.0 ios9谁快,没安卓6.0流畅?iOS 9突飞猛进终于不卡
  11. STP端口状态特点、STP端口角色特点、链路状态发生变化,STP如何重新收敛? TCN何时发?uplinkfast技术、Portfast技术、backbonefast技术、常见的STP调整命令:
  12. 三星 android截屏快捷键是什么手机,三星手机如何快速截屏?两种快速截图方法教给你!...
  13. 冯 诺依曼计算机体系结构要点,冯诺依曼体系结构计算机的要点和工作过程
  14. 2022年新型智慧城市整体规划建设方案
  15. Python合并不同数量的Excel单元格
  16. 百亿题典之C++编程题面试题
  17. Lazy与Suspense
  18. 32、Java——迷你图书管理器(对象+JDBC)
  19. 牵手中关村,这里脱胎换骨引凤来
  20. vimdiff及vim split

热门文章

  1. 信息系统开发平台OpenExpressApp - 功能权限
  2. linux下ifconfig命令看不到IP centos7——ens33
  3. bzoj2301: [HAOI2011]Problem b懵逼乌斯反演
  4. EWORD 0513
  5. LeetCode Algorithm 面试题 16.10. 生存人数
  6. 2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 省赛 - Python大学组 - A. 门牌制作
  7. 347. Top K Frequent Elements 前 K 个高频元素
  8. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1045:收集瓶盖赢大奖
  9. 百练2815 城堡问题
  10. 【STM32】FreeRTOS移植