您的位置:首页 > 编程语言 > Python开发

leetcode的python实现 刷题笔记14:最长公共前缀

2018-09-24 20:45 567 查看

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 

""

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 

a-z
 。

[code]class Solution(object):
def longestCommonPrefix(self, shuzu):
"""
:type strs: List[str]
:rtype: str
"""
# 如果是空数组,就返回空
if len(shuzu) == 0:
return ""
# 定义一些标志位,i表示的是字符串的位置,j表示的是数组的元素,end相同前缀的最后位置
i = 0
j = 0
end = 0
# 遍历数组和字符串
while j < len(shuzu) and i < len(shuzu[j]):
# 当j == 0时,找到的前缀字母是什么,先确定第一个元素的字母,然后一个个遍历,看看其他的元素是否都有这个字母
if j == 0:
gonggongqianzui = shuzu[j][i]
# 否则说明没有相同的字母了。就跳出循环
else:
if shuzu[j][i] != gonggongqianzui:
break
# 如果一直遍历,到了最后一个元素的时候,就开始找元素的下一个字母
if j == len(shuzu) - 1:
i += 1
j = 0
end += 1
# 否则一直找数组的元素
else:
j += 1
# 跳出循环之后,就返回第一个元素的被找到的前缀
return shuzu[j][:end]

sl = Solution()
st = sl.longestCommonPrefix(["flower","flower","flowe","fldsfew"])
print(st)

总结:

1.思路是先确定数组中的第一个元素,然后分别对这个元素的所有字母都进行遍历,看看其他元素是否都存在这个元素,如果有就继续遍历下一个字母,并且记录当前相同字母的最大长度,如果没有,就跳出循环。

2.选取一个参照物,以及记录字母的位置

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: