当前位置: 首页 > article >正文

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

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
  • 三、解法
  • 四、收获

一、题目

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

二、思路

2.1 解题思路

如何判断异位词?怎样的数据结构能够维护这个abc异位词?->哈希表
用两个哈希表来比较字符

2.2 代码尝试

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        hash_map;
        hash_map_p;
        vector<int> out;
        for(){
            hash_map_p.emplace();
        }
        for(int i=0;){
            hash_map.emplace();
            if(hash_map==hash_map_p){
                out.emplace(hash_map.second)
            }
        }

    }
};

2.3 疑难问题

有一点思路,但是写起来有点困难,哈希表生疏了。
如何创建哈希表?已经忘记了

三、解法

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int sLen = s.size(), pLen = p.size();

        if (sLen < pLen) {
            return vector<int>();
        }

        vector<int> ans;
        vector<int> sCount(26);
        vector<int> pCount(26);
        for (int i = 0; i < pLen; ++i) {
            ++sCount[s[i] - 'a'];
            ++pCount[p[i] - 'a'];
        }

        if (sCount == pCount) {
            ans.emplace_back(0);
        }

        for (int i = 0; i < sLen - pLen; ++i) {
            --sCount[s[i] - 'a'];
            ++sCount[s[i + pLen] - 'a'];

            if (sCount == pCount) {
                ans.emplace_back(i + 1);
            }
        }

        return ans;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/solutions/1123971/zhao-dao-zi-fu-chuan-zhong-suo-you-zi-mu-xzin/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获

哈希表就是用vector将字母映射到0-26的数组中。利用s[i]-‘a’,哈希表的比较就是数组是否相同,=
滑动窗口一般都需要有一个数据结构来动态维护,之前已经碰到过了用优先队列(大根堆),这次是哈希表,后面如果需要有变体的话,估计也就是换换数据结构,改改逻辑判断。大致的解题思路差不多。


http://www.kler.cn/a/532350.html

相关文章:

  • 蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心
  • 【Redis】主从模式,哨兵,集群
  • kamailio的kamctl的使用
  • C++泛型编程指南09 类模板实现和使用友元
  • VSCode源码分析参考资料
  • Vue指令v-html
  • 数据库课程设计基于Java+MySQL+JDBC+JavaSwing的停车场管理系统源代码+数据库,进出车辆登记,车位管理
  • OSCP - Other Machines - CuteNews
  • oracle: 数据操纵语言DML/批量更新
  • C++11详解(一) -- 列表初始化,右值引用和移动语义
  • leetcode 1124. 表现良好的最长时间段
  • 开发板目录 /usr/lib/fonts/ 中的字体文件 msyh.ttc 的介绍【微软雅黑(Microsoft YaHei)】
  • Linux基础 ——tmux vim 以及基本的shell语法
  • MySQL知识点总结(十八)
  • starrocks最佳实践、行业实践
  • 014-STM32单片机实现矩阵薄膜键盘设计
  • day38|leetcode 322零钱兑换,279.完全平方数,139.单词拆分
  • 5.5.3 UML概述(一)事物
  • 深度学习篇---二维码预训练模型
  • 博通Emulex Secure HBA:后量子加密与零信任架构的存储网络革命
  • 定安县行政区划地图矢量格式cdr高清ai文件
  • MyBatis-Plus速成指南:基本CURD
  • [LeetCode]day13 19.删除链表的倒数第n个结点
  • springboot项目Redis统计在线用户
  • IFeatureWorkspace.CreateFeatureClass(),报错对COM组件的调用返回了错误 HRESULT E_FAIL
  • intra-mart框架学习笔记:如何找到框架自带页面