python返回连续递增子序列的长度

  • 针对全是数字的序列如电话号码
    在反欺诈的运用里,很重要的一部分是电话号码欺诈
    我们认为电话号码中出现“12345”就是欺诈号码
    那么如何找出这种欺诈号码?
'''
函数找出电话号码中诸如’123456‘的连续递增子序列的长度
'''
def LIS(l):
    n=len(l)
    F=[1]*n
    for i in range(1,n):
        if int(l[i]) == int(l[i-1])+1:
            F[i]=F[i-1]+1
        else:
            F[i]=1
    return max(F)

尝试:

s="13012345233"
s=list(s)
LIS(s)

返回为6,较大的数字,认为是欺诈号码。

  • 只找递增子序列
def LIS(l):
    n=len(l)
    F=[1]*n
    for i in xrange(1,n):
        if l[i]>l[i-1]:
            F[i]=F[i-1]+1
        else:
            F[i]=F[i-1]
    return max(F)

你可能感兴趣的:(python)