【华为机试】2023年真题B卷(python)-非严格递增连续数字序列

发布时间:2023年12月30日

一、题目

题目描述:

输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如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)
文章来源:https://blog.csdn.net/u014481728/article/details/135235810
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。