LeetCode Hot Code——找到字符串中所有字母异位词

给定两个字符串 sp,找到 s中所有 p异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 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" 的异位词。

提示:

  • 1 <= s.length, p.length <= 3 * 104

  • sp 仅包含小写字母

    class Solution {
    public:
    vector<int> findAnagrams(string s, string p)
    {
    vector<int> ans;
    if(s.size()<p.size())
    {
    return ans;
    }

    复制代码
      int hashs[26] = { 0 };
      int hashp[26] = { 0 };
      for (auto e : p)
      {
      	hashp[e - 'a']++;
      }
    
      int left = 0;
      int right = 0;
      int leg = 0;
      //初始化
      while (right < p.size())
      {
      	//进窗口
      	if (hashs[s[right] - 'a'] < hashp[s[right] - 'a'])
      	{
      		leg++;
      	}
      	hashs[s[right] - 'a']++;
      	right++;
      }
      while (right < s.size())
      {
      	if(leg == p.size())
      	{
      		ans.push_back(left);
      	}
      	//出窗口

    if (hashs[s[left] - 'a'] <= hashp[s[left] - 'a'])
    {
    leg--;
    }
    hashs[s[left] - 'a']--;

    left++;

    复制代码
      	//进窗口
      	
     
      	if (hashs[s[right] - 'a'] < hashp[s[right] - 'a'])
      	{
      		leg++;
      	}
      	hashs[s[right] - 'a']++;
          right++;
      }
      if(leg == p.size())
      	{
      		ans.push_back(left);
      	}
      return ans;

    }
    };

相关推荐
AI科技星1 小时前
物理世界的几何建构:论统一场论的本体论革命与概念生成
人工智能·opencv·线性代数·算法·矩阵
踩坑记录2 小时前
leetcode hot100 153. 寻找旋转排序数组中的最小值 medium 二分查找
leetcode
让我上个超影吧2 小时前
【力扣34】在排序数组中查找元素的第一个和最后一个位置
java·数据结构·算法·leetcode
数据知道2 小时前
MongoDB 数值更新原子操作:`$inc` 实现点赞、计数器等高并发原子操作
数据库·算法·mongodb
逆境不可逃2 小时前
【从零入门23种设计模式08】结构型之组合模式(含电商业务场景)
线性代数·算法·设计模式·职场和发展·矩阵·组合模式
筱昕~呀2 小时前
冲刺蓝桥杯-DFS板块(第二天)
算法·蓝桥杯·深度优先
问好眼2 小时前
《算法竞赛进阶指南》0x01 位运算-1.a^b
c++·算法·位运算·信息学奥赛
We་ct2 小时前
LeetCode 103. 二叉树的锯齿形层序遍历:解题思路+代码详解
前端·算法·leetcode·typescript·广度优先
Swift社区2 小时前
LeetCode 391 完美矩形 - Swift 题解
算法·leetcode·swift