一、题目
题目描述:
输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如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, defaultdictdef find_longest(strs):i = 0pos = 0res_list = [0]while i < len(strs):if strs[i].isdigit(): # 判断字符是否为数字if i > 0 and strs[i-1] > strs[i]: # 判断序列是否断开pos = ires_list.append(i - pos + 1) # 计算当前序列的长度并添加到结果列表i += 1print(max(res_list)) # 输出最长序列的长度# 测试代码
strs = input().strip()find_longest(strs)