14.leetcode最長共通接頭辞python解法

1767 ワード

文字列配列の最長の共通接頭辞を検索する関数を作成します.
共通接頭辞が存在しない場合、空の文字列""が返されます.
例1:
  : ["flower","flow","flight"]
  : "fl"

例2:
  : ["dog","racecar","car"]
  : ""
  :          。

説明:
すべての入力には、小文字a-zのみが含まれます.
 
私は暴力循環法だけを考えて、循環は最初のアルファベットを比較して、初期tは“”で、もし首位がすべて同じならばtに追加して次の位を比較して、異なるならばtに戻ります.時間性能はO(n*m)であり、44 msの時間をかけて、Longest Common PrefixのPython 3提出で99.65%のユーザーを破った.
class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if len(strs)==0:
            return ""
        t=""
        flag=0
        strs=sorted(strs,key=lambda x:len(x))
        for n in range(len(strs[0])):
            temp=strs[0][n]
            for i in strs[1::]:
                if i[n]==temp:
                    continue
                else:
                    flag=1
                    break
            if flag!=1: 
                t+=temp
        return t
                

もう1つのコミットレコードの構想を貼り付けて、最初の文字列を取って次の文字列と循環して比較して、find()マッチングで検索して、インデックスが0でない場合、一致する文字列の最後のアルファベットを空にします.
class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        
        if len(strs) == 0:
            return ""
        
        prefix = strs[0]

        for s in strs[1:]:
            while s.find(prefix) != 0:
                prefix = prefix[0:len(prefix) - 1]
                if prefix == "":
                    return prefix
        return prefix