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 findAnagrams(string s, string p)
    {
    vector 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;

    }
    };

相关推荐
GreenTea28 分钟前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
fqq31 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
半夏微凉半夏殇4 小时前
x11与weston对比,优先选哪个
leetcode·均值算法·eclipse
2501_906565124 小时前
数学之美探究
算法
oier_Asad.Chen4 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
leisoo80976 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
luj_17688 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴8 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆9 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng9 小时前
2024牛客暑期多校训练营1
算法