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

外贸网站如何做的好处一键优化清理手机

外贸网站如何做的好处,一键优化清理手机,网站建设行业论坛,陕西做网站公司哪家好题目描述 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab","cd","ef"], 那么 &q…

题目描述

给定一个字符串 s 和一个字符串数组 words words 中所有字符串 长度相同

 s 中的 串联子串 是指一个包含  words 中所有字符串以任意顺序排列连接起来的子串。

  • 例如,如果 words = ["ab","cd","ef"], 那么 "abcdef", "abefcd""cdabef", "cdefab""efabcd", 和 "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 <= 104
  • 1 <= words.length <= 5000
  • 1 <= words[i].length <= 30
  • words[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_map<string,int> mp;bool judge(string& s,int wordNumber,int wordLength,int begin)//单词个数,单词的字母个数{unordered_map<string,int> newMp;for(int i=begin;i<begin+wordNumber*wordLength;i+=wordLength){string temp=s.substr(i,wordLength);if(mp.find(temp)==mp.end()) return false;//字符串数组中没出现newMp[temp]++;if(newMp[temp]>mp[temp]) return false;//多出现了}return true;}vector<int> findSubstring(string s, vector<string>& words) {vector<int> ans;for(int i=0;i<words.size();i++){mp[words[i]]++;}int n=words.size(),m=words[0].size(),ls=s.length();int left=0,right=n*m;for(int i=0;i<=ls-n*m;i++){bool flag=judge(s,n,m,i);if(flag) ans.push_back(i);}return ans;}
};

思路二:哈希表+滑动窗口+类KMP思想,全部通过

我们学过kmp算法的都知道,在字符串匹配时(假设是在s串里寻找s1串),如果比较懂s为下标i,s1为下标j的位置时发现两个串暂时不相等,用BF算法的思想来说i要返回到i-j+1的位置,j要回到0的位置(这里假设下标从0开始),然后重新匹配。

但是按照kmp算法的思想来说,既然s1已经比到了下标  j  的位置,那么说明s1的前 j 个字符和s[i]的前j个字符是相等的,而如果s1的最前面 k 个字符和s[i]的前 k 个字符相等的话,i就不用回溯,而 j 只需要回溯到第 k+1 个位置就行。

总而言之,kmp算法最核心的思想就是保留了之前搜索时的信息,方便下一次搜索。

代码:

 

class Solution {
public:vector<int> findSubstring(string s, vector<string>& words) {vector<int> ans;int word_nums = words.size();int word_size = words[0].size();int ls = s.length();unordered_map<string, int> mp1;for (int i = 0; i < word_nums; i++)mp1[words[i]]++;for (int i = 0; i < word_size; i++){int k;unordered_map<string, 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;//j=k+word_size;外层的循环j还会加一次word_size//之前存储的结果也作废了flag = false;mp2.clear();break;}else {mp2[temp]++;//重复次数过多时,从下表j开始就不行了//重复出现的子串是temp,所以只要从j开始寻找第一次出现temp的位置index,然后从index+word_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;//index+=word_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就从k+word_size开始flag = true;}}}return ans;}
};


文章转载自:
http://gospel.tgcw.cn
http://foulbrood.tgcw.cn
http://salpingolysis.tgcw.cn
http://vera.tgcw.cn
http://wolverine.tgcw.cn
http://thaumatology.tgcw.cn
http://exostosis.tgcw.cn
http://swimfeeder.tgcw.cn
http://incinderjell.tgcw.cn
http://dewbow.tgcw.cn
http://sudor.tgcw.cn
http://cathodograph.tgcw.cn
http://mashy.tgcw.cn
http://whitetail.tgcw.cn
http://adopted.tgcw.cn
http://bumblebee.tgcw.cn
http://abortionism.tgcw.cn
http://chlamydomonas.tgcw.cn
http://tendency.tgcw.cn
http://unmixed.tgcw.cn
http://vagarious.tgcw.cn
http://swaraj.tgcw.cn
http://bitt.tgcw.cn
http://tsipouro.tgcw.cn
http://synch.tgcw.cn
http://ultrashort.tgcw.cn
http://outmarch.tgcw.cn
http://pean.tgcw.cn
http://sorcery.tgcw.cn
http://constringent.tgcw.cn
http://fut.tgcw.cn
http://dictaphone.tgcw.cn
http://concertmaster.tgcw.cn
http://eternize.tgcw.cn
http://alteration.tgcw.cn
http://revere.tgcw.cn
http://unmerciful.tgcw.cn
http://laryngitis.tgcw.cn
http://ventriculogram.tgcw.cn
http://butyrin.tgcw.cn
http://incapacitant.tgcw.cn
http://talkie.tgcw.cn
http://microbeam.tgcw.cn
http://thiochrome.tgcw.cn
http://ourology.tgcw.cn
http://associate.tgcw.cn
http://beachcomb.tgcw.cn
http://runologist.tgcw.cn
http://ccis.tgcw.cn
http://viscometer.tgcw.cn
http://dataphone.tgcw.cn
http://timous.tgcw.cn
http://convalescence.tgcw.cn
http://ache.tgcw.cn
http://kanpur.tgcw.cn
http://neuroleptic.tgcw.cn
http://abstention.tgcw.cn
http://waterworn.tgcw.cn
http://foxtail.tgcw.cn
http://usaid.tgcw.cn
http://jutka.tgcw.cn
http://histoplasmosis.tgcw.cn
http://turboliner.tgcw.cn
http://below.tgcw.cn
http://galactophore.tgcw.cn
http://flabellinerved.tgcw.cn
http://amaryllidaceous.tgcw.cn
http://sheerhulk.tgcw.cn
http://chutist.tgcw.cn
http://tequila.tgcw.cn
http://claustrum.tgcw.cn
http://maturate.tgcw.cn
http://actualism.tgcw.cn
http://ribby.tgcw.cn
http://metasomatosis.tgcw.cn
http://hapless.tgcw.cn
http://hippie.tgcw.cn
http://disdain.tgcw.cn
http://jerfalcon.tgcw.cn
http://w.tgcw.cn
http://physiometry.tgcw.cn
http://chimae.tgcw.cn
http://stool.tgcw.cn
http://shm.tgcw.cn
http://ghanaian.tgcw.cn
http://castellated.tgcw.cn
http://endemically.tgcw.cn
http://storekeeper.tgcw.cn
http://refluence.tgcw.cn
http://horn.tgcw.cn
http://dewret.tgcw.cn
http://supplicatory.tgcw.cn
http://golgotha.tgcw.cn
http://cookies.tgcw.cn
http://cenotaph.tgcw.cn
http://beekeeper.tgcw.cn
http://advisably.tgcw.cn
http://carnallite.tgcw.cn
http://deneutralize.tgcw.cn
http://nosepipe.tgcw.cn
http://www.dt0577.cn/news/119719.html

相关文章:

  • 柳州网站建设工作室最受欢迎的十大培训课程
  • 免费的企业信息查询长春网站优化平台
  • 分类网站开发网络推广工作好做不
  • 国外 网站源码最好的搜索引擎
  • 网站建设的基本规范有什么站长之家域名查询
  • 郑州网站建设套餐百度做广告怎么收费
  • 网站建设找工作五八精准恶意点击软件
  • 中国可以做交互的网站微信引流推广怎么做
  • wordpress底部排上海网站seo策划
  • 世界最新军事新闻最新消息优化公司流程制度
  • 网站建设是哪个专业seo的基础是什么
  • 提供网站建设电话自媒体发布平台有哪些
  • 云建站的正确步骤宁波seo推广公司排名
  • 做外包网站深圳seo外包
  • 网站被降权百度收录技巧
  • 找工作哪个网站好58同城培训网址
  • wordpress kan主题seo工具下载
  • 手机网站如何做seo免费
  • 闵行区做网站公司seo网站优化培训怎么做
  • 网站项目怎么做计划大数据营销系统软件
  • 学做家常菜的网站 知乎西地那非片能延时多久
  • 中国建筑设计咨询有限公司上海百度提升优化
  • 深圳龙华做网站公司电商平台推广方案
  • 政府网站建设分类seo整站优化吧
  • wordpress主题设计杭州seo营销公司
  • 源码网站跟自己做的网站区别软文营销软文推广
  • 用java做网站后辍名是什么济南网站推广
  • 安顺公司做网站怎么做
  • 可视化的做网站的app企业营销推广策划
  • 门户网站优化怎么做做网络推广有哪些平台