题解 | #密码截取#

密码截取

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

思路:
典型的最长回文子串的问题,两层for循环暴力枚举所有的子串然后检查子串是否为回文串即可,存储下最大长度。
但是你会发现下面这个代码过不了
#典型的最长回文子串的问题
s=input()
max=0
for i in range(len(s)):
    for j in range(i+1,len(s)+1):
        if s[i:j]==s[i:j][::-1] and j-i>max:
            max=j-i
print(max)
我测试的时候会有三个数据TLE
后来去看了下题解,发现第一个就跟我的思路是一样的,只是多了一个条件:s[i]==s[j-1]
加上之后,就能过了。
猜测是因为切片操作比较费时间,加了一个条件,会少做一些切片操作。
代码:
#典型的最长回文子串的问题
s=input()
max=0
for i in range(len(s)):
    for j in range(i+1,len(s)+1):
        if s[i]==s[j-1] and s[i:j]==s[i:j][::-1] and j-i>max:
            max=j-i
print(max)


#华为od#
全部评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务