014 Longest Common Prefix

Original Description: Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”.


  • 要求:
    给一组string, 求出他们共同的最长的prefix, 如果没有prefix,返回“”。

  • 返回: prefix

  • 例子:
    • input: [“flower”,”flow”,”flight”]
    • output: “fl”

Solution

  • 偷懒的办法是直接使用: os.path.commonprefix(strs)
  • 将string们排序,然后用第一个string中的字符与其余string 中的逐个比较,记录共有的string数量,如果所 记录的数量 = string的个数,将该字符累加到输出的字符中。
class Solution(object):
    class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        # import os
        # return os.path.commonprefix(strs)
        
        if len(strs) == 0: 
			return ""
        if len(strs) == 1: 
			return strs[0]
        sorted_strs = sorted(strs, key=len)
        out = ""
        for i,w in enumerate(sorted_strs[0]):
            cnt = 0
            for str in sorted_strs[1:]:
                if w == str[i]:
                    cnt+=1
                else:
                    return out
                    break
                    
            if cnt == len(strs)-1:
                out+=w
        return out