对于相同或者更说有无重复等问题?对于这类问题,我们可以用两种方法来识别:1就是使用哈希,计数法,查找有无重复元素,第二个就是利用集合,一窜元素转换成集合以后,我们就能很好的完成去重找不同的工作,下面就Leecode上面的一个找公共前缀的问题来说明一下集合的这个用法:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
对于这个问题,我们只是简单谈一谈找公共前缀或者公共元素的一个思路,我们第一步可以将数组中第一个元素取出来,然后放入一个可以迭代的对象中,如列表,元组等等。第二步就是将可迭代的元素放入集合去重,然后去人元素个数,就能确定异同。
下面是我的一个判断方法,当然,这个如果用过个递归,还而已找出所有的公共元素。这个有兴趣可以试试。
class Solution(object):
def longestCommonPrefix(self, strs):
“”"
:type strs: List[str]
:rtype: str
“”"
if len(strs) == 0:
return ""
if len(strs) == 1:
if strs[0] and all(x.isalpha() for x in strs[0]):
return strs[0]
else:
return ""
if len(strs) > 1:
a = min(len(x) for x in strs)
if a == 0:
return ""
s = ''
for i in range(a):
l=[]
for j in range(len(strs)):
l.append(strs[j][i])
if len(set(l)) == 1:
s += strs[j][i]
if len(set(l)) != 1:
break
if s:
return s
else:
return ""