美文网首页
最长公共前缀

最长公共前缀

作者: 422ccfa02512 | 来源:发表于2020-10-27 22:47 被阅读0次

题目

难度级别:简单

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

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

示例 1:

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

示例 2:

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

说明:

所有输入只包含小写字母 a-z 。

解题思路

longestCommonPrefix函数处理传入进来的数组,若数组长度为0,则直接输出""。若传入的数组长度不为0,则将数组的第一位数做为初始返回值,并赋值给变量str,然后对数组从下标1开始进行循环,调用theSameInitials函数对str与当前的字符串进行比较,若循环内部的str为空字符串时,则退出循环。否则,将返回值str与当前的值进行比较前面相同的字母字符串重新赋值给str

const longestCommonPrefix = function(strs) {
    if (strs.length === 0) {
        return ""
    }

    let str = strs[0]

    for (let i = 1; i < strs.length; i++) {
        if (str === "") break
        str = theSameInitials(str,strs[i])
    }

    return str
};

const theSameInitials = function(s,l) {
    let str = ""

    if (s.length > 0 && l.length  > 0) {
        for (let i = 0; i < s.length; i++) {
            if (s[i] !== l[i]) break
            str += s[i]
        }
    }

    return str
}

优化代码

将比较写在strs数组的循环内部,通过比较str与当前数组strs的相同项,str利用字符串substring的方法取前面相同项(不过感觉执行速度上要慢一些,不知道是不是调用了substring这个方法)。

const longestCommonPrefix = function(strs) {
    if (strs.length === 0) {
        return ""
    }

    let str = strs[0]

    for (let i = 1; i < strs.length; i++) {
        if (str === "") break

        if (str.length > 0 && strs[i].length  > 0) {
            let j = 0

            for (; j < str.length; j++) {
                if (str[j] !== strs[i][j]) break
            } 

            str = str.substring(0,j) 
        }else{
            str = ""
            break
        }
    }

    return str
};

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix

相关文章

  • LeetCode 每日一题 [19] 最长公共前缀

    LeetCode 最长公共前缀 [简单] 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回...

  • 14. 最长公共前缀

    20180923-摘抄自14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,...

  • 5,最长公共前缀/数组与字符串

    最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1:...

  • Swift 最长公共前缀 - LeetCode

    题目: 最长公共前缀 描述: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""...

  • leetcode探索之旅(14)

    最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1: ...

  • Leetcode 14 最长公共前缀

    最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

  • LeetCodeSwift 14.Longest Common

    题目 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

  • [day4] [LeetCode] [title14,122]

    14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例 ...

  • 14. 最长公共前缀

    14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 说明...

  • leetcode算法-最长公共前缀

    最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 说明:所有输...

网友评论

      本文标题:最长公共前缀

      本文链接:https://www.haomeiwen.com/subject/wydfvktx.html