python - 如何在一个数字中找到最大和连续增加的数字
问题描述
如何使用 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)
解决方案
解决方案:
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]:
推荐阅读
- sql - 使用 Oracle 替换变量进行查询
- android - routingError 突然变成了 GRAPH_DISCONNECTED
- android - 2056-6363/system_process E/memtrack:无法加载 memtrack 模块
- sql - 在 azure 中一次从多个表中删除
- javascript - 打字稿代理通用
- docker - 在 GCP Docker 镜像拉取时出现错误:重新执行 cmd 上的 Untar 错误:fork/exec /proc/self/exe: stale NFS file handle
- java - Gherkin/Cucumber - 我们可以在“Backgound”中将“When”语句分组,例如“Given”吗?
- javascript - 如何处理不触发 mousemove 事件的快速移动鼠标
- .net - Powershell 查找注册表值并将它们设置在引号中
- servicestack - 肥皂端点未出现在 servicestack Asp.Net 核心应用程序中