首页 > 其他分享 >leetcode 438 找到字符串中所有字母异位词

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

时间:2024-02-14 19:22:05浏览次数:28  
标签:++ 异位 pc int vector 438 sc leetcode size

 

这个题目的有些类似实现 strStr 这个算法题目。

解题关键点:

1.采用类似滑动窗口的算法遍历字符串s。

2.用两个哈希表保存字符串s和字符串p,中每个小写字母出现的次数。

C++代码:

class Solution {
public:
    bool equals(vector<int>& sc, vector<int>& pc)
    {
        for (int i = 0; i < sc.size(); i++)
        {
            if (sc[i] != pc[i])
                return false;
        }

        return true;
    }
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int> result;
        if (s.size() == 0 || p.size() == 0 || s.size()<p.size()) return result;
        vector<int> sc(26,0);
        vector<int> pc(26,0);
        int pLen = p.size();
        int sLen = s.size();

        for (int i = 0; i < pLen; i++)
        {
            sc[s[i] - 'a']++;
            pc[p[i] - 'a']++;
        }
        if (equals(sc, pc)) result.push_back(0);
        
        for (int i = pLen; i < sLen; i++)
        {
            sc[s[i] - 'a']++;
            sc[s[i - pLen] - 'a']--;
            if (equals(sc, pc)) result.push_back(i-pLen+1);
        }

        return result;
    }
};

 

标签:++,异位,pc,int,vector,438,sc,leetcode,size
From: https://www.cnblogs.com/repinkply/p/18015488

相关文章

  • leetcode——数组算法——前缀和构建和应用
    leetcode——数组算法——前缀和构建和应用前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和303.区域和检索-数组不可变比如leetcode303.区域和(检索-数组不可变)题目介绍:给定一个整数数组nums,处理以下类型的多个查询:计算索引left和right(包含left......
  • [LeetCode] 2108. Find First Palindromic String in the Array
    Givenanarrayofstringswords,returnthefirstpalindromicstringinthearray.Ifthereisnosuchstring,returnanemptystring"".Astringispalindromicifitreadsthesameforwardandbackward.Example1:Input:words=["abc&quo......
  • Leetcode刷题第十天-回溯
    ......
  • Leetcode 1691. 堆叠长方体的最大高度
    https://leetcode.cn/problems/maximum-height-by-stacking-cuboids/description/给你n个长方体cuboids,其中第i个长方体的长宽高表示为cuboids[i]=[widthi,lengthi,heighti](下标从0开始)。请你从cuboids选出一个子集,并将它们堆叠起来。如果widthi<=widthj......
  • [LeetCode] 2641. Cousins in Binary Tree II
    Giventherootofabinarytree,replacethevalueofeachnodeinthetreewiththesumofallitscousins'values.Twonodesofabinarytreearecousinsiftheyhavethesamedepthwithdifferentparents.Returntherootofthemodifiedtree.Note......
  • Leetcode刷题第九天-回溯
    113:路径总和II链接:113.路径总和II-力扣(LeetCode)root=[-2,null,-3],targetSum=-5莫要忘记负数情况......
  • [LeetCode] LCP 30. 魔塔游戏
    小扣当前位于魔塔游戏第一层,共有N个房间,编号为0~N-1。每个房间的补血道具/怪物对于血量影响记于数组nums,其中正数表示道具补血数值,即血量增加对应数值;负数表示怪物造成伤害值,即血量减少对应数值;0表示房间对血量无影响。小扣初始血量为1,且无上限。假定小扣原计划按房间编......
  • leetcode--5. 最长回文子串(dp)
    记录23:292024-2-5https://leetcode.cn/problems/longest-palindromic-substring/dp[i][j]s[i,j]之间能否构成回文子串[i,j]之间是否能够构成需要考虑[i+1,j-1]是否构成回文子串且s[i]==s[j]当j-1>=i+1时候说明正好是俩个相邻的字符,此时如果s[i]==s[j]就肯定可......
  • leetcode 第141题:环形列表
    leetcode第141题:环形列表第一种:哈希列表publicbooleanhasCycle(ListNodehead){Set<ListNode>seen=newHashSet<ListNode>();while(head!=null){if(seen.contains(head)){returntrue;}......
  • 找到字符串中所有字母异位词
    问题描述:给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和p的长度都不超过20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例1:输入:s:"cbaeba......