拼多多部分解题

# 找出一个数组A中的的一个子数组B的长度,使得
# 当0<i<len(B)-1时, 有B[0]<B[1]<...<B[i]<...<B[-2]<B[-1]
# 解题思路,穷举所有可能的低谷所在的位置,找出最大的那一个子数组

def solution(nums):
    if len(nums) < 3:
        return
    max_len = 0
    for i in range(1, len(nums)):
        p = i
        while (p-1) >= 0:
            if nums[p] < nums[p-1]:
                p -= 1
            else:
                break
        q = i
        while (q+1) < len(nums):
            if nums[q] < nums[q+1]:
                q += 1
            else:
                break
        if (q-p+1) > max_len:
            max_len = q-p+1
    return max_len


if __name__ == '__main__':
    nums = list(map(int, input().lstrip("[").rstrip(']').split(",")))
    print(solution(nums))


# 找出一个字符串中,最大的重复子串
# 如,abcabc -> abc   11111 -> 1    1212ab -> 1212ab  12ab12 -> 12ab
# 解题思路,找出最小的那一个字串(穷举长度为1, 2, 3, ...的字串)


def solution(s):
    # 遍历所有可能的字串,长度为1,2,3,...
    for i in range(1, len(s)+1):
        for j in range(0, len(s), i):
            if (j+i) < len(s) and (j+2*i) < len(s) and s[:i] != s[j+i:j+2*i]:
                break
        else:  # 正常退出for,也就是未执行break而退出的
            t = len(s)%i  # 多余的部分
            if s[len(s)-t:] == s[:t]:
                return s[:i]
            else:
                return s


if __name__ == '__main__':
    s = input()
    print(solution(s))
#拼多多##笔试题目##秋招#
全部评论
老哥,昨天你做的笔试也是没发在线调试的吗?
点赞 回复 分享
发布于 2018-07-23 08:00

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务