【leetcode算法-简单】14. 最长公共前缀

【题目描述】

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

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

示例 1:

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

示例 2:

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

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

解答

  • 解法一:一开始先假设最长公共前缀 result = strs[0],然后依次与列表里其他的字符串比较,不断更新 result 的值,直到 result = ‘‘ 或者遍历完列表里的全部字符串

  

def longestCommonPrefix(strs):
    if not strs : return ‘‘     #如果strs为空
    if len(strs) == 1: return strs[0]    #如果strs中只有一个字符串
    if ‘‘ in strs: return ‘‘    #如果strs里存在 ‘‘

    result = strs[0]  #用resul表示当前求得的最长公共前缀
    strslen = len(strs)
    i = 1

    while result and i < strslen:
        m = len(result)
        n = len(strs[i])
        minlen = min(m,n)
        result = result[:minlen] #result长度一定小于或等于当前字符串

        for j in range(minlen):
            if result[j] != strs[i][j]:
                result = result[:j]
                break
        i += 1
    return result

  执行用时:46ms

  • 解法二:利用python列表的排序功能

  python中如果全是由字符串组成的列表,对其进行排序,会按照a-z进行排序(就像查英语字典一样,单词按照字母顺序排列)所以可以很方便的进行判断最长公共前缀

def longestCommonPrefix(self, strs: List[str]) -> str:
    if len(strs)==0: #判断输入是否为空
        return ‘‘
    if len(strs)==1: #若列表长度为1,直接返回strs[0]
        return strs[0]
    if ‘‘ in strs: #若列表里含有‘‘,直接返回‘‘
        return ‘‘

    result=‘‘
    strs.sort()  #将字符串数组排序
    for i in range(len(strs[0])):
        if i< len(strs[-1]) and strs[0][i]==strs[-1][i]:
            result+=strs[0][i]
        else:
            break
    return result

  执行用时:54ms

原文地址:https://www.cnblogs.com/xxx1206/p/11958536.html

时间: 2024-10-09 19:09:22

【leetcode算法-简单】14. 最长公共前缀的相关文章

LeetCode 14. 最长公共前缀(Longest Common Prefix)

14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". LeetCode14. Longest Common Prefix 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racec

leetcode——Longest Common Prefix 最长公共前缀(AC)

Write a function to find the longest common prefix string amongst an array of strings. 其实做起来会感觉很简单,需要注意的是要考虑效率的问题,毕竟可能是很长的字符串数组,所以可以考虑选取所有字符串中最短的那个来首先进行比较,因为最长公共子串肯定不会大于其长度,这样避免了字符串之间长度差异很大造成的效率损失,然后每次比较之后最长公共子串的长度也永远不会大于最短的那个字符串,只会不变或减小,只要遍历字符串数组,挨个

【简单算法】20.最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字

python(leetcode)-14最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-

力扣(LeetCode) 14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-

LeetCode Longest Common Prefix 最长公共前缀

题意:给多个字符串,返回这些字符串的最长公共前缀. 思路:直接逐个统计同一个位置上的字符有多少种,如果只有1种,那么就是该位是相同的,进入下一位比较.否则终止比较,返回前缀.可能有一个字符串会比较短,所以前缀最长也只是最短字符串的长度. 1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 string ans=""; 5 if(strs.empty()

leetcode Longest Common Prefix 最长公共前缀 (python)

Write a function to find the longest common prefix string amongst an array of strings. class Solution: # @return a string #最长公共前缀 def longestCommonPrefix(self, strs): if strs is None or strs ==[]:return '' result ='' pre =None for cur in xrange(len(s

14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-

[leetcode 14] 最长公共前缀

写一个函数可以查找字符串中的最长公共字符. 示例: 输入:["flower","flow","flight"] 输出:"fl" 输入:["dog","racecar","car"] 输出:" " (不存在公共的字符串) 代码: class Solution: def longestCommonPrefix(self,strs): "&qu