找到字符串中所有字母异位词-力扣

首先想到的解法时利用滑动窗口,每次匹配一个长度等于p字符串长度的s字符串的子串,然后进行判定,如果是,则将所在位置添加到数组中。

在判断两个字符串是否是字母异位词时,直接copy了之前的代码,整体代码如下:

cpp 复制代码
class Solution {
public:

    vector<int> findAnagrams(string s, string p) {
        vector<int> v;
        int size_s = s.size();
        int size_p = p.size();
        for(int i = 0; i <= size_s - size_p; i++){
            string str(s, i, size_p);
            if(isAnagram(str, p)){
                v.push_back(i);
            }
        }
        return v;
    }

    bool isAnagram(string s, string t) {
        int record[26] = {0};
        for (int i = 0; i < s.size(); i++) {
            // 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
            record[s[i] - 'a']++;
        }
        for (int i = 0; i < t.size(); i++) {
            record[t[i] - 'a']--;
        }
        for (int i = 0; i < 26; i++) {
            if (record[i] != 0) {
                // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
                return false;
            }
        }
        // record数组所有元素都为零0,说明字符串s和t是字母异位词
        return true;
    }
};
相关推荐
漫随流水1 小时前
leetcode算法(151.反转字符串中的单词)
数据结构·算法·leetcode
ada7_1 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
DeepVis Research1 小时前
【AGI/Simulation】2026年度通用人工智能图灵测试与高频博弈仿真基准索引 (Benchmark Index)
大数据·人工智能·算法·数据集·量化交易
努力学算法的蒟蒻2 小时前
day52(1.3)——leetcode面试经典150
算法·leetcode·面试
leoufung2 小时前
LeetCode 97. 交错字符串 - 二维DP经典题解(C语言实现)
c语言·算法·leetcode
leiming64 小时前
c++ map容器
开发语言·c++·算法
杨校4 小时前
杨校老师课堂备赛C++信奥之模拟算法习题专项训练
开发语言·c++·算法
世洋Blog4 小时前
AStar算法基础学习总结
算法·面试·c#·astar·寻路
haing20195 小时前
七轴协作机器人运动学正解计算方法
算法·机器学习·机器人