LeetCode题目以及答案(5)
程序员文章站
2024-03-22 14:30:22
...
题目:编写一个函数来查找字符串数组中的最长公共前缀;如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z
。
思路: (1)若字符列表中无,则输出空字符串。(2)找出字符列表中最短的字符,作为模板比较字符
(3)如果在首字母处不匹配,则输出无(无需匹配其他字符)(4)如果此字符与模板字符中一直匹配到第i个字母,则跳出这个循环,进行
下一个字符匹配。同时注意及时更新匹配到的最短字符串。
#!/usr/bin/env python
#encoding:utf-8
"""
__author__:adam
=================匹配若干字符串中最长的公共前缀============================
"""
class Solution(object):
def longestCommonPrefix(self,strs):
"""
:type strs:list[str]
:rtype:str
"""
if not strs:
return ""
else:
#假设字符列表第一个字符是最短的字符串
min_strs = strs[0]
#利用for循环找出strs列表中最小的字符串
for i in strs:
#逐个进行长短比较
if len(i) < len(min_strs):
min_strs = i
#对字符列表进行一个循环比较
for one_strs in strs:
#对两个相同的字符串跳过
if one_strs == min_strs:
continue
#进行两个字符串之间的比较
for i in range(len(min_strs)):
if one_strs[i] == min_strs[i]:
i += 1
elif i == 0:
return 0
else:
min_strs = min_strs[:i]
#进行下一个字符的比较
break
#全部比较完后返回
return min_strs
list_zero = []
list_one = ["flower","flow","flight"]
list_two = ["dog","racecar","car"]
str_test = Solution()
print str_test.longestCommonPrefix(list_zero)
print str_test.longestCommonPrefix(list_one)
print str_test.longestCommonPrefix(list_two)
>>> =============== RESTART: C:/Users/20525/Desktop/min_strs.py =============== fl 0 >>> |
上一篇: 和为s的两个数字