编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例一:
输入: ["flower","flow","flight"]
输出: "fl"
示例二:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
思路
把列表中最短的元素作为标准(循环的次数),依次把每个元素的第一个值、第二个值、第三个值等等,分别每个值放到集合中(集合有去重功能),此时如果集合中只有一个值,就可以认为是共同的,之后在把第二个值放到集合中,依次类推。
此时的我也流下了没有技术的泪水。
暴力解法:
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ''
elif strs ==['']:
return ''
elif len(strs) == 1:
return strs[0]
else:
# min_str = min(strs)
num = len(strs)
list2 = []
for i in range(num):
list2.append(len(strs[i]))
list2.sort()
str_num = list2[0]
set1 = set()
combine_str = ""
for j in range(str_num):
for diff_str in strs:
set1.add(diff_str[j])
if len(set1) == 1:
list1 = list(set1)
set1 = set()
combine_str = combine_str + list1[0]
return combine_str