【华为机试】2023年真题B卷(python)-非严格递增连续数字序列
2023-12-30 17:41:05
一、题目
题目描述:
输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!