问题描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串""
。
示例 1:
输入: [“flower”,”flow”,”flight”]
输出: “fl”
示例 2:
输入: [“dog”,”racecar”,”car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母a-z
。
问题分析:
题目不难,拿出一个字符串为基准,一次一次的去扫描其他字符串,碰到不匹配的就返回,即可。当然Python也有很多接口可以实现。
Python3实现:
class Solution:
def longestCommonPrefix(self, strs):
n = len(strs)
if n==0:return ''
if n==1:return strs[0]
rstr = ''
for i in range(len(strs[0])):
tar = strs[0][i]
just = 0
for v in strs[1:]:
if i >= len(v):
just = 0
break
if tar == v[i]:
just = 1
else:
just = 0
break
if just == 1:
rstr = rstr + tar
else:
return rstr
return rstr
def longestCommonPrefix1(self, strs):
import os
return os.path.commonprefix(strs)
def longestCommonPrefix2(self, strs):
if not strs:
return ""
for i, ch in enumerate(zip(*strs)):
if len(set(ch)) != 1:
return strs[0][:i]
else:
return min(strs, key=len)
if __name__ == '__main__':
solu = Solution()
strs = ["aa", "a"]
print(solu.longestCommonPrefix2(strs))
参考链接:leetcode.com/problems/longest-common-prefix/solution/
声明:如有不妥或问题还请您,批评指正,自己只是学习总结,不涉及其他,大神勿喷哦。