算法练习第10道-最长公共前缀

166 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、 题目描述

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

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

**示例 1:**

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

**示例 2:**

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

二、思路分析

  • 思路

  • 拿第一值的每一个参数对比后边的值,如果不相等的时候return,

  • 这时候的i值是前缀部分的值

  • 代码实现逻辑

  • 判断如果值为0的时候返回""

  • 使用str的第一个值的每个值对比后边值得每个字符

  • 如果不等就返回,且后边值得每一个值得长度要小于第一个值得长度

三、代码

let longestCommonPrefix = function(strs) {
  /**
   * 思路
   * 
   * 拿第一值的每一个参数对比后边的值,如果不相等的时候return,
   * 这时候的i值是前缀部分的值
   * 
   * 代码实现逻辑
   * 判断如果值为0的时候返回""
   * 使用str的第一个值的每个值对比后边值得每个字符
   * 如果不等就返回,且后边值得每一个值得长度要小于第一个值得长度
   * 
   * */ 
  if(strs.length == 0) return ''
  for(let i = 0; i < strs[0].length ; i++) {
    let firstChar = strs[0][i]
    for(let j = 1; j < strs.length; j++) {
      if(firstChar != strs[j][i] || strs[j].length == i) {
        console.log(i)
        return strs[0].substr(0, i);
      }
    }
  }
  return strs[0]
}