五、Leetcode算法 最长公共前缀

1、题目

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

2、分析

这道题是一道简单题,但是还是用了很长的时间去改bug,刚看到题目,首先是想遍历列表,然后再去依次遍历每个字符串,每次去遍历字符串的时候将第一个字符串中的第一个字母添加到另一个字符串中,直到有一个字符串不等于新建字符串给的最后一个时,判断新建的字符串中的各种形式,输出答案,最终的答案也是依靠这个思路实现的,但是在编程中发现,总是会有一些特殊的bug没有发现。

3、代码

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if len(strs) == 1: return strs[0]
        
        s = ''
        while '' not in strs and strs:
            i = 0
            for item in strs:
                i += 1
                if i == 1:
                    s += item[0]
                    strs[0] = strs[0][1:]
                else:
                    if item[0] != s[-1]:
                        return s[:len(s)] if (len(s) == 1)&(i == 1) else s[:-1]
                    else:
                        strs[strs.index(item)] = item[1:]
                        
        return s

4、结果

执行用时 :56 ms, 在所有 python3 提交中击败了13.52% 的用户
内存消耗 :12.8 MB, 在所有 python3 提交中击败了99.65%的用户

5、改进

感觉一层for循环时不可比避免的,优化条件可能是整合整合if判断条件把。。。


望您:
“情深不寿,强极则辱,谦谦君子,温润如玉”。

你可能感兴趣的:(Leetcode算法)