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.选取一个参照物,以及记录字母的位置
阅读更多相关文章推荐
- LeetCode 14 最长公共前缀(字符串)
- leetcode——14——Longest Common Prefix最长公共前缀
- leetcode-14-最长公共前缀
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- python 实现求解字符串集的最长公共前缀方法
- [C++]LeetCode 14: Longest Common Prefix(最长公共前缀)
- LeetCode 14 Longest Common Prefix(最长公共前缀)(String)
- LeetCode-14-Longest Common Prefix(最长公共前缀)
- 【LeetCode-面试算法经典-Java实现】【014-Longest Common Prefix(最长公共前缀)】
- LeetCode 14. 最长公共前缀
- leetcode-14-求字符串数组最长公共前缀
- LeetCode - 14. 最长公共前缀
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- leetcode--最长公共前缀--简单的字符串操作
- LeetCode 14. Longest Common Prefix(最长公共前缀)
- leetcode_14. Longest Common Prefix 求字符串数组中所有字符串的最长前缀
- Leetcode:Longest Common Prefix 最长公共前缀
- 【LeetCode】14. Longest Common Prefix 最长公共前缀问题
- Leetcode刷题记——14. Longest Common Prefix(最长公共前缀)
- LeetCode 14. Longest Common Prefix最长公共前缀