题目描述:
输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如12234属于非严格递增连续数字序列)。
输入描述:
输入一个字符串仅包含大小写字母和数字,输入的字符串最大不超过255个字符。
输出描述:最长的非严格递增连续数字序列的长度
示例 1:
输入:?
abc2234019A334bc?
输出:
4
说明:?2234为最长的非严格递增连续数字序列,所以长度为4
测试用例:aaaaaa44ko543j123j7345677781 ???
--> ?34567778?
aaaaa34567778a44ko543j123j71 ???
--> ?34567778?
345678a44ko543j123j7134567778aa
--> ?134567778
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
直接一个循环就搞定了,但是要注意几个分支条件:
分支1:如果不是数字,当前长度直接置为0,上一个数字也置为0。
分支2:如果是数字,且大于上一个数字,当前长度+1,最大长度比较,更新上一个数字。
分支3:如果是数字,且小于上一个数字,当前长度置为1,更新上一个数字。
# -*- coding: utf-8 -*-
'''
@File : 2023-B-非严格递增连续数字序列.py
@Time : 2023/12/27 08:05:25
@Author : mgc
@Version : 1.0
@Desc : None
'''
# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict
def find_longest(strs):
i = 0
pos = 0
res_list = [0]
while i < len(strs):
if strs[i].isdigit(): # 判断字符是否为数字
if i > 0 and strs[i-1] > strs[i]: # 判断序列是否断开
pos = i
res_list.append(i - pos + 1) # 计算当前序列的长度并添加到结果列表
i += 1
print(max(res_list)) # 输出最长序列的长度
# 测试代码
strs = input().strip()
find_longest(strs)