题解 | #在字符串中找出连续最长的数字串#

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

https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec

思路:

动态规划
维护长度为n+1的dp数组
初始化为0 dp[i]代表以i为结尾的子字符串最长的连续数字串长度
状态转移方程为:
dp[index] = dp[index] + 1 if dp[index].isdigit()

代码:

def longestSub(s):
    n = len(s)
    dp = [0] * (n + 1)
    for index in range(n):
        if s[index].isdigit():
            dp[index + 1] = dp[index] + 1
    max_len = max(dp)
    res = ""
    for index in range(n+1):
        if dp[index] == max_len:
            res +=  s[index - dp[index]:index]
    return [res, str(max_len)]

while True:
    try:
        s = input()
        res = longestSub(s)
        print(','.join(res))
    except:
        break

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务