首页 > 解决方案 > 如何在一个数字中找到最大和连续增加的数字

问题描述

如何使用 python 找到最大和连续增加的数字及其在数字中的位置?

这是我的方法:

def findLIS(A, n): hash = dict()

LIS_size, LIS_index = 1, 0
  
hash[A[0]] = 1
  
for i in range(1, n): 
    if A[i] - 1 not in hash: 
        hash[A[i] - 1] = 0



    hash[A[i]] = hash[A[i] - 1] + 1
    if LIS_size < hash[A[i]]: 
        LIS_size = hash[A[i]] 
        LIS_index = A[i] 
start = LIS_index - LIS_size + 1
while start <= LIS_index: 
    # print(start, end = " ") 
    z.insert(i - 1,start)
    
 

       start += 1
    print(z[~0])
    print(sum(z))
# Driver Code 

if __name__ == "__main__": 
    num = input()
    A = [int(x) for x in str(num)]
    
    n = len(A) 
    z=[]
    findLIS(A, n) 
    

标签: pythonpython-3.xpython-2.7

解决方案


解决方案:

n = input()+"0"

max_sum = 0
max_pos = ""
start = 0
sum = int(n[0])
for i in range(1, len(n)):
    if n[i-1] >= n[i]:
        if max_sum < sum:
            max_sum = sum
            max_pos = "{}-{}".format(start+1, i)
        start = i
        sum = int(n[i])
    else:
        sum += int(n[i])
print("{}:{}".format(max_sum, max_pos))

有数字要严格增加。如果序列333也符合您需要更改条件的条件:if n[i-1] > n[i]:


推荐阅读