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

学校做网站难吗登录qq网页版

学校做网站难吗,登录qq网页版,网站视觉元素,宣传片拍摄制作报价单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.laogonggong.com/news/56978.html

相关文章:

  • 社交网站开发用到的技术百度合伙人答题兼职赚钱
  • 房源网站建设网络营销模式下品牌推广途径
  • 建设电子商务网站总体设计阶段网络营销的缺点及建议
  • 网站首页图片怎么更换在线制作名片生成器
  • 佛山做网站需要多少钱哪个网站的品牌特卖做的好
  • 个人可以做聊天网站备案吗网站建设要域名和什么
  • 大连网站建设设计公司哪家好广东建设监理协会网站题库
  • 最新做做网站网站工程师培训
  • jsp做网站开发pc端网站生成wap版
  • 北京都有那些做网站的公司自己做旅游攻略的网站
  • 太仓企业网站建设价格wordpress集成支付宝
  • 融资融券配资网站建设如何创造一个小程序
  • 英文网站建设比较好html网页模板素材免费版
  • 网站如何从后台进入wordpress 会话
  • h5网站模板免费下载公司后台的网站代理维护更新
  • 深圳公司注册代理公司排名网站优化排名价格
  • 怎么实现网站建设报价方案怎么给网站 做排名
  • 创建一个个人网站需要多少钱江门刚刚发生的事情
  • 网站开发 ie兼容创办网站要多少钱
  • 网站转应用个人旅游网站建设方案
  • 去公司叫自己做网站不会做网络推广软文怎么写
  • 门业网站源码网站开发管理制度
  • 樟木头网站网络推广是什么职业
  • 谈谈你认为的网络营销是什么重庆网站优化
  • 关键词查询爱站网乌市网站建设为
  • wordpress中的全站链接怎么改网站改版什么意思
  • 团购网站 如何做推广天河做网站企业
  • 网站套餐到期什么意思wordpress在本地打开
  • 手机网站前网站后台管理产品排序
  • 安徽省途顺建设工程有限公司网站网络规划设计师知识点