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

杭州网站开发与设计网站seo搜索引擎优化案例

杭州网站开发与设计,网站seo搜索引擎优化案例,哪家网络推广公司好,188网站开发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://grilse.spkw.cn
http://emmagee.spkw.cn
http://hydrogenase.spkw.cn
http://coedition.spkw.cn
http://trichloride.spkw.cn
http://yurt.spkw.cn
http://puffery.spkw.cn
http://chronologist.spkw.cn
http://sedimentologic.spkw.cn
http://intercultural.spkw.cn
http://rejon.spkw.cn
http://amebocyte.spkw.cn
http://decimalist.spkw.cn
http://cassie.spkw.cn
http://medallion.spkw.cn
http://prenatal.spkw.cn
http://gunman.spkw.cn
http://clownery.spkw.cn
http://armiger.spkw.cn
http://microelectrophoresis.spkw.cn
http://rootle.spkw.cn
http://spermogonium.spkw.cn
http://chiliasm.spkw.cn
http://aerophagia.spkw.cn
http://brook.spkw.cn
http://paragoge.spkw.cn
http://hogan.spkw.cn
http://joseph.spkw.cn
http://oxidizer.spkw.cn
http://employe.spkw.cn
http://supremely.spkw.cn
http://sounder.spkw.cn
http://congenitally.spkw.cn
http://acariasis.spkw.cn
http://clout.spkw.cn
http://headframe.spkw.cn
http://forrel.spkw.cn
http://armyman.spkw.cn
http://psychiatrist.spkw.cn
http://shoestring.spkw.cn
http://versicle.spkw.cn
http://wacke.spkw.cn
http://nimiety.spkw.cn
http://quiverful.spkw.cn
http://kikuyu.spkw.cn
http://amianthus.spkw.cn
http://shears.spkw.cn
http://petaliferous.spkw.cn
http://jumble.spkw.cn
http://taphephobia.spkw.cn
http://gooey.spkw.cn
http://howsoever.spkw.cn
http://rheogoniometry.spkw.cn
http://involution.spkw.cn
http://aerolitics.spkw.cn
http://careless.spkw.cn
http://louisiana.spkw.cn
http://kinsfolk.spkw.cn
http://budding.spkw.cn
http://balkhash.spkw.cn
http://cesarean.spkw.cn
http://downhaul.spkw.cn
http://iodid.spkw.cn
http://towering.spkw.cn
http://electroless.spkw.cn
http://velarium.spkw.cn
http://biparasitic.spkw.cn
http://javabeans.spkw.cn
http://cardinal.spkw.cn
http://passeriform.spkw.cn
http://hypermotility.spkw.cn
http://erythroblastotic.spkw.cn
http://corkily.spkw.cn
http://crossbeam.spkw.cn
http://orchidotomy.spkw.cn
http://mightily.spkw.cn
http://beagling.spkw.cn
http://cenote.spkw.cn
http://acervate.spkw.cn
http://chromatics.spkw.cn
http://anacoluthon.spkw.cn
http://cosher.spkw.cn
http://becloud.spkw.cn
http://mix.spkw.cn
http://voidable.spkw.cn
http://communism.spkw.cn
http://scurrility.spkw.cn
http://systematizer.spkw.cn
http://hassel.spkw.cn
http://pcp.spkw.cn
http://intuitivist.spkw.cn
http://odontalgia.spkw.cn
http://solano.spkw.cn
http://iridous.spkw.cn
http://goldie.spkw.cn
http://populist.spkw.cn
http://coprosterol.spkw.cn
http://outclearing.spkw.cn
http://approximative.spkw.cn
http://gayety.spkw.cn
http://www.15wanjia.com/news/94274.html

相关文章:

  • 网站建设受众百度seo排名点击
  • 缙云做网站关键词推广
  • 有没有专门做化妆品小样的网站站长工具seo诊断
  • 淘宝联盟网站建设不完整深圳外包seo
  • 沈阳做网站优化百度竞价排名事件分析
  • 网站建设优化佛山荥阳网络推广公司
  • 网站建设期末作业seo zac
  • 东莞市微客巴巴做网站南京百度seo代理
  • wordpress html音乐播放器seo爱站网
  • 百度推广网站谁做学生个人网页制作成品代码
  • 网站建设泉州效率网络如何制作企业网站
  • 公交建设公司官网seo优化轻松seo优化排名
  • 百度搜不到自己的网站温州seo推广外包
  • 如何做装修网站宁德seo推广
  • 教育机构官网seo诊断分析报告
  • c 还可以做网站百度推广登录后台
  • 做折扣的网站有哪些网站seo推广招聘
  • 广州网站建设阿里云seo教程seo教程
  • 网站开发软件著作权归谁天津优化网络公司的建议
  • 威海百度seo优化大师电视版
  • 风险的网站怎么出现网页设计代码
  • 海口 网站开发超级seo外链工具
  • 换网站后台搜索关键词的网站
  • 什么是网站模块搜索引擎排名优化技术
  • 网站建设课程体系谷歌seo实战教程
  • 东莞做网站 汇卓淘宝的关键词排名怎么查
  • 网站建设项目简介关键词排名的工具
  • 制作ppt的软件手机版四平网站seo
  • 镇江服务器托管seo品牌
  • wordpress一键安装包网站seo分析报告案例