📅  最后修改于: 2023-12-03 14:57:56.818000             🧑  作者: Mango
在编程中,我们经常需要比较两个字符串的相似度,而最长公共前缀是一个非常重要的概念。最长公共前缀指的是至少两个字符串的前缀字符串最长的字符串。
给定一个字符串数组,编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回空字符串 ""。
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
本问题的解法思路比较简单,可以通过前缀匹配来实现。具体步骤如下:
def longestCommonPrefix(strs) -> str:
if not strs:
return ""
shortest_str = min(strs, key=len)
for i, char in enumerate(shortest_str):
for other_str in strs:
if other_str[i] != char:
return shortest_str[:i]
return shortest_str
时间复杂度:$O(nm)$,其中 n 是字符串数组中的字符串数量,m 是最短字符串的长度。最坏情况下,我们需要遍历所有字符串一次,比较每个字符串的前缀,共需要 $n*(m-1)$ 次比较。
空间复杂度:$O(1)$,只需要常数空间来保存最长公共前缀。