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

h5企业网站开发网站搭建设计方案

h5企业网站开发,网站搭建设计方案,中国建设教育学会网站,东乡网站建设题目描述 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如#xff0c;如果 words [ab,cd,ef]#xff0c; 那么 如果 words [ab,cd,ef] 那么 abcdef abefcdcdabef cdefabefabcd 和 efcdab 都是串联子串。 acdbef 不是串联子串因为他不是任何 words 排列的连接。 返回所有串联子串在 s 中的开始索引。你可以以 任意顺序 返回答案。 示例 1 输入s barfoothefoobarman, words [foo,bar] 输出[0,9] 解释因为 words.length 2 同时 words[i].length 3连接的子字符串的长度必须为 6。 子串 barfoo 开始位置是 0。它是 words 中以 [bar,foo] 顺序排列的连接。 子串 foobar 开始位置是 9。它是 words 中以 [foo,bar] 顺序排列的连接。 输出顺序无关紧要。返回 [9,0] 也是可以的。示例 2 输入s wordgoodgoodgoodbestword, words [word,good,best,word] 输出[] 解释因为 words.length 4 并且 words[i].length 4所以串联子串的长度必须为 16。 s 中没有子串长度为 16 并且等于 words 的任何顺序排列的连接。 所以我们返回一个空数组。示例 3 输入s barfoofoobarthefoobarman, words [bar,foo,the] 输出[6,9,12] 解释因为 words.length 3 并且 words[i].length 3所以串联子串的长度必须为 9。 子串 foobarthe 开始位置是 6。它是 words 中以 [foo,bar,the] 顺序排列的连接。 子串 barthefoo 开始位置是 9。它是 words 中以 [bar,the,foo] 顺序排列的连接。 子串 thefoobar 开始位置是 12。它是 words 中以 [the,foo,bar] 顺序排列的连接。 提示 1 s.length 1041 words.length 50001 words[i].length 30words[i] 和 s 由小写英文字母组成 请问您在哪类招聘中遇到此题 1/5 社招 校招 实习 未遇到 通过次数 196.5K 提交次数 502.9K 通过率 39.1% 思路一暴力遍历通过178/179 字典字符串数组里每个单词的长度是固定的假设字典里有word_num个单词每个单词的长度为word_size。那么我们的任务就是在s中找到所有长度为word_num*word_size的子串判断这个子串能不能由字典里的单词串联起来其中串联指的是words里面的任意一个排列的连接。 这个方法的代码比较好写先用一个哈希表存放字典中每个单词出现的次数。每次判断子串时再创键一个新表遍历word_num个单词若某个单词在旧表中没有出现过或者是新表出现次数比旧表的多就说明这个子串不符合条件。 实现代码 class Solution { public:unordered_mapstring,int mp;bool judge(string s,int wordNumber,int wordLength,int begin)//单词个数单词的字母个数{unordered_mapstring,int newMp;for(int ibegin;ibeginwordNumber*wordLength;iwordLength){string temps.substr(i,wordLength);if(mp.find(temp)mp.end()) return false;//字符串数组中没出现newMp[temp];if(newMp[temp]mp[temp]) return false;//多出现了}return true;}vectorint findSubstring(string s, vectorstring words) {vectorint ans;for(int i0;iwords.size();i){mp[words[i]];}int nwords.size(),mwords[0].size(),lss.length();int left0,rightn*m;for(int i0;ils-n*m;i){bool flagjudge(s,n,m,i);if(flag) ans.push_back(i);}return ans;} }; 思路二哈希表滑动窗口类KMP思想全部通过 我们学过kmp算法的都知道在字符串匹配时假设是在s串里寻找s1串如果比较懂s为下标is1为下标j的位置时发现两个串暂时不相等用BF算法的思想来说i要返回到i-j1的位置j要回到0的位置这里假设下标从0开始然后重新匹配。 但是按照kmp算法的思想来说既然s1已经比到了下标  j  的位置那么说明s1的前 j 个字符和s[i]的前j个字符是相等的而如果s1的最前面 k 个字符和s[i]的前 k 个字符相等的话i就不用回溯而 j 只需要回溯到第 k1 个位置就行。 总而言之kmp算法最核心的思想就是保留了之前搜索时的信息方便下一次搜索。 代码 class Solution { public:vectorint findSubstring(string s, vectorstring words) {vectorint ans;int word_nums words.size();int word_size words[0].size();int ls s.length();unordered_mapstring, int mp1;for (int i 0; i word_nums; i)mp1[words[i]];for (int i 0; i word_size; i){int k;unordered_mapstring, int mp2;bool flag false;//表示同一个i下,上次匹配成功for (int j i; j word_nums * word_size ls; j word_size){//从下标j开始的子串if (!flag) k j;for (; k j word_nums * word_size; k word_size){string temp s.substr(k, word_size);if (mp1.find(temp) mp1.end()) {//下标k之前包括下标k开始的子串都不用判断了j k;//jkword_size;外层的循环j还会加一次word_size//之前存储的结果也作废了flag false;mp2.clear();break;}else {mp2[temp];//重复次数过多时从下表j开始就不行了//重复出现的子串是temp所以只要从j开始寻找第一次出现temp的位置index然后从indexword_size开始匹配if (mp2[temp] mp1[temp]) {int index j;string t s.substr(index, word_size);while (t ! temp) {index word_size;mp2[t]--;t s.substr(index, word_size);}j index word_size;//indexword_size;外层循环会加一次word_sizemp2[temp]--;}}}//从j开始的子串完全匹配if (k j word_nums * word_size){ans.push_back(j);//移除从j开始的子串的第一个单词string t s.substr(j, word_size);mp2[t]--;if (mp2[t] 0) mp2.erase(t);//k word_size;//只有一个单词没有匹配好所以从k就从kword_size开始flag true;}}}return ans;} };
http://www.hkea.cn/news/14449712/

相关文章:

  • 淄博 网站制作公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 毕节网站建设推广网络营销模式的建议
  • 广州网站建设设计外贸公司怎么做网站
  • 网站建设与网页制作基础入门教程港海建设网站
  • 嘉兴免费做网站机关门户网站 建设 方案
  • 京东网站建设哪家好建设职业技术学院网站
  • 湖南备案网站建设方案书网页设计实训报告总结200字
  • 做网站订金为什么需要交那么多wordpress 黑体
  • 国外设计有名网站镇江网站建设平台
  • 信息时代网站建设的重要性新网站怎么推广
  • 建设通网站是什么网站北京工信部网站
  • 网站视频链接福州制作网站软件
  • 佛山html5网站建设使用wordpress漏洞反弹shell
  • 杭州培训网站建设西安优秀的集团门户网站建设费用
  • 网站策划公司wordpress获取指定id分类名称
  • 好的做外贸的网站有哪些装饰设计资质等级标准
  • 宝安小学网站建设企业网银登录
  • 建设网站的要求亦庄建设局网站
  • 怎么开网站详细步骤网站空间怎么选
  • 湖南建设人力资源湖南网站建设浙江嘉兴最新事件
  • 苏州松陵镇哪里做网站邯郸最新消息
  • 商城网站建设视频成都企业建站
  • 医院做网站运维找个免费的网站
  • 听歌网站源码wordpress dux2.0
  • 青岛谷歌网站建设长春网站建设找新生科技
  • 个人博客模板网站wordpress应用展示
  • 自适应网站搭建wordpress 手册主题
  • 做外贸通常用哪些网站网站建设Skype打不开
  • 百度官方网站网址湖北专业网站建设检修
  • 深圳网站建设三把火如何创作自己的平台