最长子串 | HJ92 在字符串中找出连续最长的数字串

import re
def func(s:str):
    res = []
    n = 0  # 记录最长子串的长度值
    longer_detect = False  # 检测到更长的子串时,开启开关
    for i in range(len(s)):
        if s[i-n:i+1].isdigit():  # 下标i+1控制待检测子串总比最大长度值n加了1格
            res = []  # 有更长的子串时,之前res记录的子串都清空
            n += 1
            longer_detect = True
        elif longer_detect:  # 检测最长数字子串后遇到字母,把刚才的子串加入res
            res.append(s[i-n:i])
            longer_detect = False
        elif s[i-n:i].isdigit():  # 以上只将更长的子串加入res,这里处理子串长度和n相同
            res.append(s[i-n:i])
    if s[-n:].isdigit():  # 若末尾最后还有一个n长度纯数字子串,加入res
        res.append(s[-n:])
    
    print(''.join(res)+','+str(n))

while True:
    try:
        s = input()
        func(s)
    except:
        break

用时:20min

华为笔试刷题 文章被收录于专栏

高质量题: 1~40:HJ16,HJ22,HJ24,HJ26,HJ27,HJ28,HJ35,HJ37,HJ39; 40~80:HJ41,HJ42,HJ43,HJ44,HJ48,HJ50,HJ52,HJ53,HJ57,HJ61,HJ63,HJ64,HJ70,HJ71,HJ74,HJ77; 80~108:HJ82,HJ85,HJ88,HJ89,HJ93,HJ95,HJ98,HJ103,HJ107

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务