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

公司网站开发哪家好电子商务网站怎么做推广

公司网站开发哪家好,电子商务网站怎么做推广,用linux系统怎么自己建设网站,中国空间站拒绝10国名单26个字符,我复制怎么了?26个字符我比较个数怎么了? 顶多时间复杂度*26 本题用固定窗口大小的滑动窗口每次比较包含26个元素的数组次数,最容易写。 动态窗口大小哈希表存数值(双指针差值)难想难写。 一、动态…

26个字符,我复制怎么了?26个字符我比较个数怎么了? 顶多时间复杂度*26

本题用固定窗口大小的滑动窗口+每次比较包含26个元素的数组次数,最容易写。

动态窗口大小+哈希表存数值(双指针差值)难想难写。

一、动态滑动窗口+哈希表(双指针)

        这个问题,刚开始想的是,维护一个滑动窗口,左指针left,右指针right,左指针往右走从集合中拿走这个字符,右指针往右走在集合中加入这个字符,但是由于p可能有多个重复字符,这使得我们不得不记录字符的个数了。那,我们记录个数的话,怎么记录呢?可以用哈希表存储该字符的个数,如果集合中加入一个字符,字符个数就减1,直至哈希表中没有元素则说明匹配成功,但是匹配了一次之后呢? 重新复制一次不得了,最多26个字符!

        不过这里需要注意的是,当匹配成功后,左右指针都只能往后移动一次,只有当右指针遇到的字符不在目标字符串中时,才复制一次,完全重开。

        这里的字符个数完全确定,最好使用vector<int>,查找更快。

class Solution {
public:vector<int> findAnagrams(string s, string p) {int left=0;int right=0;unordered_map<char,int> source;for(auto &i:p) source[i]+=1;//可以复制,就26个字母,我复制怎么了?vector<int> ans;unordered_map<char,int> hmap(source);while(right<s.size()){if(hmap.find(s[right])!=hmap.end()){//在里面hmap[s[right]]-=1;if(hmap[s[right]]==0) hmap.erase(s[right]);if(hmap.size()==0){ans.emplace_back(left);hmap[s[left++]]=1;}++right;}else{if(source.find(s[right])!=source.end()){//它在源头里面 可能有点用的hmap[s[left++]]+=1;}else {hmap=source;//注意这里! 这里得还原了left=++right;}}}return ans;}
};

vector实现:

class Solution {
public:vector<int> findAnagrams(string &s, string &p) {if(s.size()<p.size()) return {};vector<int> cnt_s(26);vector<int> cnt_p(26);vector<int> ans;vector<int> zero(26);for(char &i:p) ++cnt_p[i-'a'];cnt_s=cnt_p;int left=0,right=0;while(right<s.size()){if(cnt_s[s[right]-'a']>0){--cnt_s[s[right]-'a'];++right;}else{if(cnt_p[s[right]-'a']>0){cnt_s[s[left]-'a']++;++left;}else{cnt_s=cnt_p;left=right=right+1;}}if(cnt_s==zero) ans.push_back(left);}return ans;}
};

二、固定滑动窗口

这里实际上就是上述方法用vector实现的。由于是26个字符,直接比较就行了。

class Solution {
public:vector<int> findAnagrams(string &s, string &p) {if(s.size()<p.size()) return {};vector<int> source(26);vector<int> hmap(26);vector<int> ans;for(int i=0;i<p.size();++i){hmap[s[i]-'a']+=1;source[p[i]-'a']+=1;}int left=0,right=p.size();while(right<s.size()){if(hmap == source) ans.emplace_back(left);hmap[s[left++]-'a']-=1;hmap[s[right++]-'a']+=1;}if(hmap == source) ans.emplace_back(left);return ans;}
};

http://www.yayakq.cn/news/256929/

相关文章:

  • 平台网站推广方案安徽海鹏建设工程有限公司网站
  • 做网站和做软件哪个难中国建设人才信息网是官方网站吗
  • 网站做盗版视频赚钱吗北京财优化
  • 企业网站建设怎么样做会计分录网站设置qq临时会话
  • 怎么做钓qq密码网站深圳广告公司排行
  • 做家教需要什么哪个网站的会员哪种语言做网站好
  • 做网站 图片需要多大的免费创建自己app平台
  • 淘客网站开发源代码学字体网站
  • 备案查询站长工具wordpress仿豆瓣
  • 呼和浩特网站优化公司公司网站建设开发济南兴田德润简介图片
  • dede5.7网站搬家如何建立公司网站多少钱
  • 在线个人网站网站建设及域名申请 厦门
  • 国内优秀网站设计师关于wap网站模板下载
  • 网站建设公司有前途吗电脑培训课程
  • 北京网站设计服务哪些网站可以做微信
  • 一万元做网站建立公司网站多少钱
  • 网站打开速度太慢wordpress怎么打开很慢
  • 哪个网站看电视剧最全还免费新开店铺怎么做推广
  • 怎样才能增加网站免费空间说说点赞
  • 网站建设与规划网站开发职业前景评估
  • 怎么样可以做网站建设网站前期准备工作
  • 网站优化推广费用佛山公司网站推广外包服务
  • 郑州网站建设 易云互联郑州比较大的软件公司
  • 建设部网站打不开网站建设百度搜索到左边的图
  • 网站开发能赚钱吗c 网站开发需要什么软件
  • 做网站需要固定ip吗小程序源码网免费
  • 公司有网站域名,如何做网站wordpress 哪些插件
  • 提供手机网站制作厦门seo公司网站
  • 机关事业单位网站建设台州优化排名推广
  • erp二次开发好还是网站开发好国外旅游哪几个网站做攻略好