我正在研究Longest Common Prefix - LeetCode


  编写一个函数以在字符串数组中找到最长的公共前缀字符串。
  
  如果没有公共前缀,则返回一个空字符串""
  
  范例1:
  
  

Input: ["flower","flow","flight"]
Output: "fl"

  
  范例2:
  
  
Input: ["dog","racecar","car"]
Explanation: There is no common prefix among the input strings.

  
  注意:
  
  所有给定的输入均以小写字母a-z


我设计了这样的解决方案

def longestCommonPrefix(self, strs: List[str]) -> str:
    res = ''
    #base case 1
    if len(strs) < 1: return res
    size = min(len(s) for s in strs)
    #base case 2 one of them is empty
    if size < 1: return res

    #iteration case
    for i in range(size):
        if strs[0][i] == strs[1][i] == str[2][i]:
            res += strs[0][i]
        else: break


如果if strs[0][i] == strs[1][i] == strs[2][i]:将元素添加到res

但是,在我的解决方案中,strs的长度固定为3,给定条件是任意长度的strs

怎么写这样的表达式

            if strs[0][i] == strs[1][i] == str[s2][i] ....strs[length-1][i]:


for else解决方案:

    #iteration case
    for i in range(size):
        prefix = strs[0][i]
        for j in range(1, len(strs)): #check the chain equal
            if strs[j][i] != prefix: break
        else:
            res += prefix

    return res

最佳答案

您可以通过allzip实现,请尝试以下操作:

if all(str1[i] == str2[i] for str1, str2 in zip(strs[:-1], strs[1:])):

希望对您有所帮助,如有其他问题,请发表评论。 :)

关于python - 对List [str]的任意长度进行多次相等测试以解决LongestCommonPrefix,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55585499/

10-12 16:53