题解 | #密码截取#执行速度超过90%,哈哈

密码截取

http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

while True:
    try:
        str_input = input()
        # 中心为一个元素时
        single_center_list,double_center_list = [1]*len(str_input), [0]*len(str_input)
#         print(single_center_list)
        for i in range(1, len(str_input) - 1):
            j = 0
            while j < min(i, len(str_input) - i - 1):
                j += 1
                if str_input[i-j] == str_input[i+j]:
                    single_center_list[i] += 2
                else:
                    break
#         print(single_center_list)
        single_center_max = max(single_center_list)
        
        # 中心为2个元素时
        for i in range(1, len(str_input) - 1):
            j = 0
            first_flag = True
            while j < min(i, len(str_input) - i - 2):
                j += 1
                if str_input[i] == str_input[i+1]:
                    if first_flag:
                        double_center_list[i] = 2
                        first_flag = False
                    if str_input[i-j] == str_input[i+1+j]:
                        double_center_list[i] += 2
                    else:
                        break
                else:
                    break
        double_center_max = max(double_center_list)
        print(max(single_center_max, double_center_max))
    except:
        break
全部评论
这道题与 HJ85 有点类似,但为什么 HJ85 的暴力解法为什么会 TLE 呢?这种解法的时间复杂度应该也是 O(n^2) 吧?是因为 Python3 字符串切片导致内存占用量巨大而超时的嘛?
点赞 回复 分享
发布于 2022-01-30 11:28
求大神解答 j
点赞 回复 分享
发布于 2022-04-16 11:22
[1]*len(str_input), [0]*len(str_input) 请问这一段是什么意思呀?
点赞 回复 分享
发布于 2022-05-23 19:27

相关推荐

头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
5 2 评论
分享
牛客网
牛客企业服务