[LeetCode: No.5]
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
1 | Input: "babad" |
Example 2:
1 | Input: "cbbd" |
最长回文子串的中间子串也是回文串,换言之,回文串是否最长,可以看回文串两边的字符是否相同。例如“dabcba”的最长回文子串是“abcba”,其可看出回文子串“bcb”的拓展,判断“bab”两边的字符是否相同决定是否进行回文子串拓展(可以利用切片的索引左右移动实现)
由这个想法下, 写出第一个代码:
1 | class Solution: |
其中在While语句中, s[left] == s[right]是一定要放在最后面的,因为在python中and的机制是这样的and之前的是Flase, 那么and后面的就不会被执行,有可能会出现left=-1或者right=len(s),这是的s[left]和s[right]会超出索引值。还有就是一定要注意字符串的索引值和长度。
但是这段代码还是会出错,当输出值s为’abbc’是 ,检测不出bb,因为他没有对称中心。所以我们在做添加,left和right的初始值不设为想等而是相差1
1 | class Solution: |