我正在研究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
最佳答案
您可以通过all
和zip
实现,请尝试以下操作: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/