leetcode 14 最长公共前缀(Longest common prefix) python3 多种思路(sorted() / sort())

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。
class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        
        # 思路一: 一个笨方法
#         length = 0
#         leng = 10000
#         for s in strs :
#             if leng >= len(s):
#                 leng = len(s)
#                 mins = s
  
#         if len(strs)<1 or mins == "": return ""       # 考虑字符串列表或者字符串为空的特殊情况
        
#         for i in range( len(mins) ):        
#             for j in range(len(strs)):
#                 print(strs[j][i],mins[i])
#                 if strs[j][i] == mins[i] and j == len(strs)-1:
#                     length += 1
#                     if len(mins)-1 == i :
#                         return mins[:length] 
#                 if strs[j][i] != mins[i] :
#                     return mins[:length]
                
    
        # 思路二: 排序法,代价不低:
        # if strs == []:
        #     return ''
        # lista = sorted(strs,key=len)  # 可以应用在所有可迭代对象的高阶函数sorted()简化思路一
        # str1=lista[0]
        # str_common = ''               # 直接用字符串存储返回值,然不是返回的整数位数,减少一部转化过程
        # for j in range(len(str1)):           
        #     for i in range(1,len(lista)):    # 不用和自己比较,提高一点效率
        #         if lista[i][j] != str1[j]:   # 更简化的判断条件
        #             return str_common
        #     str_common = str_common + str1[j]
        # return str_common
    
    
        
        # 排序法更精简的写法,只需要比较第一个和最后一个的公共前缀:
    
        if not strs:
            return ''
        strs.sort()                        # sort()函数只用于列表的排序,字符串默认升序
        print(strs)
        res = ''
        for i in range(len(strs[0])):
            if strs[-1][i] != strs[0][i]:   # 省略中间的比较,提高效率
                return res
            res += strs[0][i]
        return res
        
        
        
    
    
    
    
    
    
所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。

你可能感兴趣的:(【leetcode】,刷题总结,&,编程心得)