leetcode-14- 最长公共前缀

举报
林太白 发表于 2025/11/12 09:38:04 2025/11/12
【摘要】 leetcode-14- 最长公共前缀

leetcode-14- 最长公共前缀

① 题目

如下:

编写一个函数来查找字符串数组中的最长公共前缀

如果不存在公共前缀,返回空字符串 “”

官方给的实例:

示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"


示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

② 思路分析

  • 分析:

取出最长公共前缀,那我们就可以直接拿第一个出来,然后转为数组,然后拿后面的每一个去跟这个第一项作比较,看里面的字符是否相同,如果后面的字符创长度比这个第一项还短,那就可以直接忽略不计。比这个长的话,游戏继续。

具体实现:

数组为空,返回’’

循环里面的字符串每个的长度 i

循环外层数组长度 s

判断flower 下的f是否和flow 下的f相同

相同=> 返回l拼接到第一个下面依次

不相同=> 返回原本的

③ 解题

方式一:

var longestCommonPrefix = function(strs) {
    if(strs.length==0){
          return ''   
      };
      var allstring = "";
      for (var s = 0; s < strs[0].length; s++) {
          var dataA = strs[0][s];
          for (var m = 1; m < strs.length; m++) {
              if ( s >= strs[m].length ||  strs[m][s] !== strs[0][s]) {
                  return allstring;
              }
              allstring +=  strs[0][s];
          }
      }
      return allstring
};

输出以后发现,虽然貌似没啥毛病,但是就是出现问题。

ffllo strsall 

重新分析我们的逻辑可以发现

我依次使用了循环第一个数据字符串长度 ⇒ 整个数组的长度= > 当第一次能满足条件的时候,我把值塞进了allstring里面,但是这个时候返回的第一个字母l是在我循环外层数组的时候(也就是重新循环了2次),所以返回的ll ,所以我的allstring 其实应该放到外层循环的外头即可,取循环第一次的其中相同的字符串即可。

处理Bug

完善我们的代码以后:

var strs = ["flower", "flow", "flight"],flower = ['f', 'l'];
function strscommon(strs){
if(strs.length==0){
    return ''   
};
var allstring = "";
for (var s = 0; s < strs[0].length; s++) {
    var dataA = strs[0][s];
    for (var m = 1; m < strs.length; m++) {
        if ( s >= strs[m].length ||  strs[m][s] !== strs[0][s]) {
            return allstring;
        }
    }
    allstring +=  strs[0][s];
}
}
console.log(strscommon(strs),'strsall');

查看我们的输出结果:

fl strsall

解题完成!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。