首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

拿什么拯救你,我的offer!

资源干货第一时间送达!(周日赠书噢)

写在前边:

小詹此记录贴的读者越来越少了,也许是小詹总结的不够好欢迎留言区提出宝贵的意见!也欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

No.5 最大回文子串

原题:(有中文网站,就不去读英语啦哈哈)

给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。

例如:

思路分析:这题难度官网给出的是中等难度,小詹自己做的时候却花了很久,学习之路还有很远啊~看到这个题目,小詹是想着先找到所有存在的回文子串,之后比较长度,输出最长的子串。动笔根据所给案例进行了比划,发现一个很关键的点!最长回文子串的中间子串也是回文串,换言之,回文串是否最长,可以看回文串两边的字符是否相同。例如“dabcba”的最长回文子串是“abcba”,其可看出回文子串“bcb”的拓展,判断“bab”两边的字符是否相同决定是否进行回文子串拓展(可以利用切片的索引左右移动实现)

排坑!小詹觉得这个思路不错,就按照思路进行了实现,代码是下面这样子的(有雷坑噢)

嗯~小伙伴感兴趣可以将代码提交试试看,只能通过部分样例测试。为什么呢?小詹提交后发现类似示例2“cbbd”这种会出错!找到了错误就好分析了,是因为上边的代码默认从同一个字符位置向两端拓展,然而类似“cbbd”这种测试用例,是从相邻两个字符串位置进行拓展,所以我们可以两种情况都考虑进去,最后选择最长的,考虑到这之间有相同的操作,为代码整洁,将其模块化分割出一个函数,代码如下:

给出运行结果之前,有必要关于self说几句,之前也有小伙伴群里问过,这里给出几句话:

self 不是一个关键词,可以替换成其他(比如this),只是习惯用self

self不是指向类本身,而是指向类实例对象(比如class person() a = person('xiaozhan'),这时self会指向实例person类的实例类对象a)

完整代码运行结果如下:(小詹是中文网站看题,英文网站提交)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G1KVE100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券