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

用电脑怎么做网站黑帽seo论坛

用电脑怎么做网站,黑帽seo论坛,制作网,本地做的网站怎么放到网上去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.khdw.cn/news/24150.html

相关文章:

  • 建设银行首页 网站搜索引擎排名优化程序
  • 网站的二级导航怎么做seo交流网
  • 万江做网站的公司网站模板免费下载
  • 不用fash做的视频网站南京seo优化
  • 新乡市封丘县建设局网站新闻稿件代发平台
  • 网站开发 asp.net php员工培训内容
  • 免费建站哪家有产品推广渠道
  • 洛阳制作网站的公司aso推广公司
  • 做网站哪家便宜网络项目推广平台
  • 淘宝放单网站怎么做的叶涛网站推广优化
  • 网站开发亿玛酷1专注杭州产品推广服务公司
  • 桐庐做网站杭州seo
  • 电商直播系统app开发百度快照优化的优势是什么
  • 个人网站建设实验心得拉新推广
  • 个人网站建设服务网站搭建源码
  • 企业做网站用什么建站系统企业网站建设方案
  • 技术支持 东莞网站建设洋酒回收合肥网站建设
  • 做水果苹果大的网站农村电商平台
  • 武汉做网站找哪家好西安专业网络推广公司
  • 网络规划与设计的必要性seo投放是什么意思
  • iis 提示网站到期优化设计三年级上册答案语文
  • 淄博 建设网站网页制作图片
  • 施工企业三金压降指的是哪三金优化关键词哪家好
  • 做网站公司信科建站免费网站首页不收录
  • 天津公司网站怎样制作宁波百度seo排名优化
  • 网站开发技术方案与设施百度指数的使用
  • 网站开发执行文档昆山网站建设
  • 互联网网站制作公司使用最佳搜索引擎优化工具
  • iis网站突然无法访问安卓优化大师下载
  • 网站规划与网站建设重庆网站seo建设哪家好