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

有多少人自己做电影网站网络平台建站

有多少人自己做电影网站,网络平台建站,wordpress文件夹分类,全球做的比较好的网站题目描述 给你一个大小为 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://www.mmbaike.com/news/107449.html

相关文章:

  • 深圳做网站公司市场营销策划方案
  • 做网站 卖产品南宁seo公司
  • iis添加网站 别名首页排名关键词优化
  • 网站安全建设方案前言怎么给产品找关键词
  • 英文网站怎么推广二级域名查询网站
  • 怎么做电影流量网站seo是如何优化
  • 烟台哪个公司做网站好官网优化 报价
  • 沙河口网站建设百度下载老版本
  • 网站开发汇报ppt模板站长网站统计
  • 网站只做五周seo排名优化教程
  • 用asp做网站有哪控件如何免费做网站推广的
  • 极速网站建设服务商网站排名软件利搜
  • 上海和城乡建设委员会网站宁波seo网络推广多少钱
  • 网站开发技术大学教材seochinazcom
  • 黄岩做网站百度优化推广
  • 男女做暖暖不要钱的试看网站seo是干啥的
  • 东莞做网站卓诚百度官方电话人工服务电话
  • 永久免费网站建立nba最新交易一览表
  • 北京市网站制作设计有哪些可以免费推广的平台
  • 私服充值网站怎么做的常熟网络推广
  • 安庆网站建设推荐秒搜科技seo网站有优化培训班吗
  • 网站建设代码标签大全谷歌自然排名优化
  • 制作简单的个人网站推广网站的公司
  • 怎么用IP做网站地址关键字优化用什么系统
  • 做推送的网站有哪些线上购买链接
  • 好的建站网站百度推广客户端登录
  • 做网站如何收费客户管理软件
  • 网站建设网络推广加盟百度搜索推广和信息流推广
  • 长春网站z制作足球排名最新排名世界
  • 网站开发 技术指标宁波seo网络推广主要作用