[LeetCode]438.找到字符串中所有字母异位词(C++)

1.代码

cpp 复制代码
#include<array>
class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int> result;
        int lens = s.size();
        int lenp = p.size();
        array<int, 26> s1 = {0};
        array<int, 26> p1 = {0};
        if(lens < lenp){
            return result;
        }
        for(char c:p){
            p1[int(c-'a')] ++;
        }
        for(int i = 0;i < lenp;i ++){
            s1[int(s[i]-'a')] ++;
        }
        for(int i = 0;i <= lens-lenp;i ++){
            if(s1 == p1){
                result.push_back(i);
            }
            if(i == lens-lenp) break;
            s1[int(s[i]-'a')] --;
            s1[int(s[i+lenp]-'a')] ++;
        }
        return result;
    }
};

2.思路

在s中构造一个长度与p相同的滑动窗口,用两个数组分别记录p和滑动窗口中的字母种类和数量,若两个数组完全相同,则表示找到一个字母异位词,将此时滑动窗口的起始位置加入result。

相关推荐
博语小屋4 分钟前
线程同步与条件变量
linux·jvm·数据结构·c++
TL滕16 分钟前
从0开始学算法——第八天(堆排序)
笔记·学习·算法·排序算法
Ayanami_Reii17 分钟前
进阶数据结构-AC自动机
数据结构·算法·动态规划·字符串·ac自动机
崇山峻岭之间18 分钟前
C++ Prime Plus 学习笔记030
c++·笔记·学习
报错小能手19 分钟前
数据结构 AVL二叉平衡树
数据结构·算法
l1t21 分钟前
利用Duckdb求解Advent of Code 2025第5题 自助餐厅
数据库·sql·mysql·算法·oracle·duckdb·advent of code
List<String> error_P33 分钟前
C语言枚举类型
算法·枚举·枚举类型
liu****1 小时前
20.预处理详解
c语言·开发语言·数据结构·c++·算法
努力学算法的蒟蒻1 小时前
day26(12.6)——leetcode面试经典150
算法·leetcode·面试
代码游侠1 小时前
数据结构——哈希表
数据结构·笔记·学习·算法·哈希算法·散列表