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

动态网站开发背景怎么做推广赚钱

动态网站开发背景,怎么做推广赚钱,做运营的网站,河北邢台医学高等专科学校Problem: 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 预备知识解题思路复杂度Code其它细节推荐博客或题目博客题目滑动窗口哈希表 预备知识 此题用到了双指针算法中的滑动窗口思想,以及哈希表的运用。c中是unordered_map。如果对此不了解的u…

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

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

  • 预备知识
  • 解题思路
  • 复杂度
  • Code
  • 其它细节
  • 推荐博客或题目
    • 博客
    • 题目
      • 滑动窗口
      • 哈希表

预备知识

image.png

此题用到了双指针算法中的滑动窗口思想,以及哈希表的运用。c++中是unordered_map。如果对此不了解的uu,建议查看相关介绍博客和更简单的题目!!!

解题思路

该题解法为:滑动窗口 + 哈希表。

  1. 该题的滑动窗口是固定的,我们只需要对每次移动新字符和删除字符进行判断,时间复杂度为O(n)。

  2. 首先,定义一个哈希表,记录要满足匹配p字符串需要多少的对应的字符。

    unordered_map<char, int> pp;
    
  3. 遍历p,出现对应的字符,就在该位置的–,说明还需要在s中找多少该字符。

    while (j < p.size()) {  //O(1) 理论上子字符串的操作应该是1//开始遍历,在s上初始化第一个字符串,能够满足对应字符供给的就++pp[s[j++]]++;
    }
    
  4. 遍历pp,如果不为0,说明该子字符串不满足匹配条件,则跳到x.

    for (auto& [a, b] : pp) {   //O(1) max=26//遍历pp,如果不为0,说明该子字符串不满足匹配条件,则跳到xif (b != 0) goto x;
    }
    
  5. 最后进行全局遍历

    while (j < s.size()) {  //O(n)//开始遍历//对于j位置的字符,将pp对应位置++,表示提供一个字符pp[s[j]]++;//对于i位置的字符,将pp对应位置--,表示不能提供一个字符pp[s[i]]--;for (auto& [a, b] : pp) {   //O(1) max=26if (b != 0) goto xx;}v.push_back(i + 1);xx:;i++;j++;
    }
    

复杂度

时间复杂度:

O(26 * n),26是遍历哈希表中的每种英文字母的个数,最多为26,n是遍历滑动窗口。

空间复杂度:

O(26 + n),26是哈希表最大size,n是vector最大size。

Code

class Solution {
public:vector<int> findAnagrams(string s, string p) {//记录要满足匹配p字符串需要多少的对应的字符unordered_map<char, int> pp;    vector<int> v;int i = 0, j = 0;for (auto a : p) {  //O(n)//遍历p,出现对应的字符,就在该位置的--,说明还需要多少该字符pp[a]--;}while (j < p.size()) {  //O(1) 理论上子字符串的操作应该是1//开始遍历,在s上初始化第一个字符串,能够满足对应字符供给的就++pp[s[j++]]++;}for (auto& [a, b] : pp) {   //调试bug的时候可以用输出的方法cout << a << b << endl;}for (auto& [a, b] : pp) {   //O(1) max=26//遍历pp,如果不为0,说明该子字符串不满足匹配条件,则跳到xif (b != 0) goto x;}v.push_back(i);x:;while (j < s.size()) {  //O(n)//开始遍历//对于j位置的字符,将pp对应位置++,表示提供一个字符pp[s[j]]++;//对于i位置的字符,将pp对应位置--,表示不能提供一个字符pp[s[i]]--;for (auto& [a, b] : pp) {   //O(1) max=26if (b != 0) goto xx;}v.push_back(i + 1);xx:;i++;j++;}return v;}
};

其它细节

可以尝试用输出日志的方式来获得局部代码的正确性。对于比较长的代码,我们应该在写完整个代码之前,已经完成多个地方的日志输出。多加练习能够提高自己写代码的正确性。

for (auto& [a, b] : pp) {   //调试bug的时候可以用输出的方法cout << a << b << endl;
}

推荐博客或题目

博客

  1. 滑动窗口详解
  2. 哈希表理论基础

题目

滑动窗口

  1. 无重复字符的最长子串 难度:++

哈希表

  1. 两数之和 难度:++
  2. 三数之和 难度:+++
  3. 四数之和 难度:++++
  4. 四数相和II 难度:++++
http://www.dt0577.cn/news/43629.html

相关文章:

  • 制作商城网站开发人民网今日头条
  • 网站有没有做网站地图怎么看杭州排名优化公司电话
  • 聚焦伟业网站怎么做推广关键词搜索排行榜
  • 精品资料网官方网站媒体发布公司
  • 网站制作和收费标准免费找客户软件
  • 安徽省建设工程信息网官网是什么网站百度网盘下载慢
  • 电话手表网站在线优化网站
  • 本溪市城乡建设委员会网站微信crm系统软件
  • 在线购物商城seo快速排名软件
  • 自己免费做网站(二)事件营销案例
  • 湖南网站建设的公司排名各大搜索引擎收录入口
  • 阿里巴巴批发网站上面怎么做微商太原seo网站管理
  • 网站建设网站目的模板潮州网站建设
  • qq靓号申请免费网站怎么提高seo关键词排名
  • 网站建设弹窗代码长春网站建设
  • 做外贸网站企业网站百度seo关键词优化
  • wordpress 留言给站长发邮件2023年百度小说风云榜
  • 上海疫情最新情况最新消息seo怎么优化简述
  • 打开国外网站很慢怎么办关键词首页排名代发
  • 模板网站怎么做才美观企业营销网站制作
  • 七台河做网站优化大师免费版下载
  • 做网站就业要会什么网站建设网络推广seo
  • 做两个阿里网站长沙网站seo诊断
  • 网站群 优点今日热点头条新闻
  • 苏州新区网站建设怎么接广告推广
  • 无锡网站建设优化互联网营销推广方案
  • 用phpmysql做网站搜索关键词排名优化技术
  • seo免费诊断电话合肥seo整站优化
  • 网站灰色跟优化关键词软件
  • 自学室内装修设计教程seo优化排名怎么做