刚开始刷,python好多还不会,有错误欢迎指正
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
方法一
利用python的max和min函数,注意排序时候的比较方法。
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:return ""
str1=max(strs)
str2=min(strs)
for i,num in enumerate(str1):
if num!=str2[i]:
return str1[:i]
return str1
这段代码是一个Python解决方案,用于查找字符串列表中的最长公共前缀。函数名为longestCommonPrefix。
首先,我们检查输入字符串列表是否为空(即长度为0),如果是,则直接返回一个空字符串。
然后,我们使用内置函数max和min分别找到输入字符串列表中的最大和最小字符串。由于公共前缀必须对所有字符串都相同,因此我们只需比较最大字符串和最小字符串之间的公共前缀。
接下来,我们使用enumerate()函数遍历最大字符串str1中的每个字符num和它们的索引i。如果当前字符num不等于最小字符串str2中对应位置的字符,则返回最大字符串str1从头开始到当前位置的子串,表示这就是最长的公共前缀。
最后,如果最大字符串完全匹配,则返回整个最大字符串作为结果字符串。
综上,这段代码实现了查找字符串列表中的最长公共前缀的功能,并返回该前缀作为一个字符串。
方法二
比方法一运行速度快
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:return " "
strs.sort()
n=len(strs)
a=strs[0]
b=strs[n-1]
res=''
for i in range(len(a)):
if i<len(a) and a[i]==b[i]:
res=res+a[i]
else:
break
return res
这段代码是一个Python解决方案,用于查找字符串列表中的最长公共前缀。函数名为longestCommonPrefix。
首先,我们检查输入字符串列表是否为空(即长度为0),如果是,则直接返回一个空格字符。
然后,我们使用sort()方法对字符串列表进行排序(按字典序)。排序后,由于公共前缀必须对所有字符串都相同,因此我们只需比较第一个字符串和最后一个字符串之间的公共前缀。
接下来,我们将第一个字符串a和最后一个字符串b分别赋值给变量a和b。
然后我们创建一个空字符串res来保存结果,然后遍历第一个字符串a的每个字符i,如果当前字符i同时在a和b中出现并且相等,则将其添加到结果字符串res中。如果不相等则退出循环。
最后,返回结果字符串res,其中存储了两个字符串之间的最长公共前缀。
综上,这段代码实现了查找字符串列表中的最长公共前缀的功能,并返回该前缀作为一个字符串。