python中关于公共或者相同问题的解决思路

对于相同或者更说有无重复等问题?对于这类问题,我们可以用两种方法来识别: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 ""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值