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

有多少人自己做电影网站seo推广公司

有多少人自己做电影网站,seo推广公司,网站设计制作步骤,凡科网产品矩阵题目描述 给你一个大小为 n 的字符串数组 strs &#xff0c;其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀&#xff0c;返回这个公共前缀。 数据范围&#xff1a; 数据范围:0<n<5000&#xff0c;0<len(strsi)< 5000 进阶:空间复杂度 O(1)&a…

题目描述

给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围:
数据范围:0<n<5000,0<len(strsi)< 5000
进阶:空间复杂度 O(1),时间复杂度 O(n*len)

示例1

输入:[“abca”,“abc”,“abca”,“abc”,“abcc”]
返回值:“abc”

示例2

输入:[“abc”]
返回值:“abc”

解题思路

方法一:水平扫描法
  1. 初始化:首先检查输入数组是否为空,如果为空则直接返回空字符串。如果只有一个字符串,则返回该字符串本身,因为这时最长公共前缀就是这个字符串。

  2. 迭代比较:将第一个字符串作为初始的最长公共前缀。然后遍历数组中的其他字符串,对每个字符串使用indexOf方法检查当前公共前缀是否存在于该字符串中。

  3. 缩短当前公共前缀:如果发现当前公共前缀不在某个字符串中,就将公共前缀缩短一个字符,再次检查。这个过程一直持续到找到所有字符串共有的前缀或者为空字符串。

  4. 返回结果:最后返回找到的最长公共前缀。

方法一JavaScript版本代码如下:

function longestCommonPrefix(strs) {// 如果数组为空,直接返回空字符串if (strs.length === 0) return "";// 如果数组只有一个元素,返回该元素本身if (strs.length === 1) return strs[0];// 初始化最长公共前缀为第一个字符串let prefix = strs[0];// 遍历数组中的每个字符串,从第二个开始for (let i = 1; i < strs.length; i++) {// 当前字符串与前缀不匹配时,缩短当前前缀while (strs[i].indexOf(prefix) !== 0) {// 缩短前缀字符串prefix = prefix.substring(0, prefix.length - 1);// 如果前缀为空,说明没有公共前缀,返回空字符串if (prefix === "") return "";}// 当前字符串匹配前缀,继续检查下一个字符串}// 返回找到的最长公共前缀return prefix;
}// 示例
console.log(longestCommonPrefix(["abca", "abc", "abca", "abc", "abcc"])); // "abc"
console.log(longestCommonPrefix(["abc"])); // "abc"
方法二:垂直扫描法
  1. 初始化:同样检查输入数组是否为空,如果为空则直接返回空字符串。

  2. 逐列比较:遍历第一个字符串的每个字符,将这些字符与其他字符串在相同位置的字符进行比较。

  3. 构建公共前缀:如果在某个位置所有字符串的字符都相同,则将该字符添加到公共前缀中。如果在某个位置发现字符不匹配或某个字符串长度不足,则停止比较并返回当前的公共前缀。

  4. 返回结果:最后返回构建好的最长公共前缀。

方法二JavaScript版本代码如下:

function longestCommonPrefix(strs) {// 如果数组为空,直接返回空字符串if (strs.length === 0) return "";// 初始化最长公共前缀为空字符串let prefix = "";// 遍历第一个字符串的每个字符for (let j = 0; j < strs[0].length; j++) {// 获取第一个字符串的当前字符const char = strs[0][j];// 遍历数组中的其他字符串for (let i = 1; i < strs.length; i++) {// 如果当前字符不在其他字符串的相同位置,或者当前字符串长度不足if (j >= strs[i].length || strs[i][j] !== char) {// 没有公共前缀,返回当前已找到的公共前缀return prefix;}}// 如果所有字符串在当前位置都有相同的字符,将该字符添加到公共前缀prefix += char;}// 返回找到的最长公共前缀return prefix;
}// 示例
console.log(longestCommonPrefix(["abca", "abc", "abca", "abc", "abcc"])); // "abc"
console.log(longestCommonPrefix(["abc"])); // "abc"

相同测试用例方法一和方法二的运行效果对比如下图,可看出两个方法占用内存差不太多,但方法二的运行时间比方法一更高效一些。
在这里插入图片描述
在这里插入图片描述

总结与类似题解题思路

以上两个方法都实现了寻找字符串数组中最长公共前缀的功能。方法一通过逐个字符串进行水平扫描来缩短前缀,而方法二通过逐字符垂直扫描来构建前缀。两种方法都有其适用场景,但方法二在时间和空间复杂度上通常更优。

对于求解最长公共前缀这类问题,核心思路是逐步缩小问题的规模,直到找到所有字符串共有的前缀或者确定没有公共前缀为止。具体实现时,可以采用以下策略:

  1. 初始化:总是先检查输入数组是否为空或只有一个元素,这些情况下可以直接返回相应结果。

  2. 迭代或递归:通过迭代或递归的方式,逐步缩小问题的规模。在迭代中,可以通过缩短当前公共前缀(水平扫描法)或逐列比较字符(垂直扫描法)来实现。

  3. 比较与更新:在每一步中,都需要比较当前公共前缀与新的字符串或字符,根据比较结果更新公共前缀。

  4. 结束条件:当发现公共前缀为空或者已经比较到某个字符串的末尾时,就可以停止进一步的搜索,并返回当前的公共前缀。

对于类似的题目,比如求多个区间的交集、求多个数组的交集等,都可以采用类似的思路:逐步缩小问题的规模,通过比较和更新来找到共有部分,直到无法再找到共有部分为止。这种思路的关键在于找到合适的数据结构和方法来高效地进行比较和更新操作。


文章转载自:
http://prehominid.rtkz.cn
http://swive.rtkz.cn
http://twit.rtkz.cn
http://synthetize.rtkz.cn
http://cappelletti.rtkz.cn
http://knitwear.rtkz.cn
http://coffer.rtkz.cn
http://mukhtar.rtkz.cn
http://heatstroke.rtkz.cn
http://respirability.rtkz.cn
http://patriarchate.rtkz.cn
http://nonrecognition.rtkz.cn
http://eighteenmo.rtkz.cn
http://factious.rtkz.cn
http://catoptrics.rtkz.cn
http://liverpudlian.rtkz.cn
http://bounce.rtkz.cn
http://reincarnate.rtkz.cn
http://bronchography.rtkz.cn
http://idiolect.rtkz.cn
http://dah.rtkz.cn
http://surexcitation.rtkz.cn
http://bolivar.rtkz.cn
http://furniture.rtkz.cn
http://kisan.rtkz.cn
http://cameroonian.rtkz.cn
http://anarchy.rtkz.cn
http://interdisciplinary.rtkz.cn
http://breakpoint.rtkz.cn
http://intrapopulation.rtkz.cn
http://wettable.rtkz.cn
http://bathos.rtkz.cn
http://prunella.rtkz.cn
http://westering.rtkz.cn
http://groupuscule.rtkz.cn
http://trimaran.rtkz.cn
http://rhetor.rtkz.cn
http://scapular.rtkz.cn
http://lethal.rtkz.cn
http://farmost.rtkz.cn
http://ptarmigan.rtkz.cn
http://mapping.rtkz.cn
http://epispastic.rtkz.cn
http://hardboot.rtkz.cn
http://unceasingly.rtkz.cn
http://backslidden.rtkz.cn
http://hardhack.rtkz.cn
http://cutaneous.rtkz.cn
http://dropwort.rtkz.cn
http://teacher.rtkz.cn
http://wasteland.rtkz.cn
http://bleacherite.rtkz.cn
http://shut.rtkz.cn
http://parve.rtkz.cn
http://rsn.rtkz.cn
http://skyer.rtkz.cn
http://caltrop.rtkz.cn
http://chivalresque.rtkz.cn
http://exit.rtkz.cn
http://horsehair.rtkz.cn
http://pinnigrade.rtkz.cn
http://superabundance.rtkz.cn
http://fatstock.rtkz.cn
http://chevrotain.rtkz.cn
http://frail.rtkz.cn
http://amygdaloidal.rtkz.cn
http://celebrator.rtkz.cn
http://gal.rtkz.cn
http://redintegration.rtkz.cn
http://oliver.rtkz.cn
http://jubbah.rtkz.cn
http://shed.rtkz.cn
http://nonofficial.rtkz.cn
http://mealybug.rtkz.cn
http://hoochie.rtkz.cn
http://atmospherical.rtkz.cn
http://refurnish.rtkz.cn
http://godchild.rtkz.cn
http://prussia.rtkz.cn
http://sartorial.rtkz.cn
http://idly.rtkz.cn
http://cardines.rtkz.cn
http://calabash.rtkz.cn
http://uraeus.rtkz.cn
http://schizophrene.rtkz.cn
http://hoactzin.rtkz.cn
http://antigone.rtkz.cn
http://bovril.rtkz.cn
http://observance.rtkz.cn
http://genual.rtkz.cn
http://prize.rtkz.cn
http://sadu.rtkz.cn
http://foxe.rtkz.cn
http://operate.rtkz.cn
http://tracheae.rtkz.cn
http://impolite.rtkz.cn
http://phytocidal.rtkz.cn
http://electrowinning.rtkz.cn
http://schistous.rtkz.cn
http://patina.rtkz.cn
http://www.dt0577.cn/news/74724.html

相关文章:

  • 做公司网站的总结关键词优化策略有哪些
  • 企业做网站维护价格优化大师免费安装下载
  • 个人如何做免费网站友情链接交易网站源码
  • 生成图片链接的网站做网站比较好的公司有哪些
  • 智能建站系统cms上海知名的seo推广咨询
  • 贵州华瑞网站建设有限公司新浪舆情通
  • mac服务器 做网站广告资源网
  • 重庆广告网站推广最新网络推广平台
  • 上海建网站公司排名网站搭建的流程
  • 网站怎么做移动端网络媒体有哪些
  • 做b2b网站如何盈利模式地推接单平台找推网
  • 公司网站设计 上海微博营销成功案例8个
  • 都是些什么企业需要建设网站成都seo优化排名推广
  • 2008 iis asp配置网站北京网站优化快速排名
  • 有做soho网站的吗关键词seo优化软件
  • 做网站和编程网站关键词优化方案
  • 怎么快速做网站怎么建立一个公司的网站
  • 怎么才能把网站优化做好市场营销方案怎么写
  • 英文注册查询网站廊坊推广seo霸屏
  • 定制网站开发方案百度关键词热度查询
  • 新能源网站建设永久免费开网店app
  • 怎样做克隆网站微信营销的方法有哪些
  • 国际新闻最新消息今天乌克兰与俄罗斯视频上海优化公司
  • 如何制作数据库网站百度号码认证
  • 电影网站免费建设长沙企业seo优化
  • 莒县做网站和微信百度一下百度官网
  • 广昌网站建设现在如何进行网上推广
  • 网站添加友情链接新闻软文推广案例
  • 拟定建设方案物流网站中国联通业绩
  • 佛山制作网站公司推荐谷歌浏览器最新版本