『LeetCode』练习第三弹_算法5题
2017-05-10 09:19
405 查看
5. Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ s = list(s) l = len(s) num = [] for i in range(l): for j in range(i,l+1): # range前闭后开,切片也是前闭后开,所以不+1会丢值 tem = s[i:j] tem.reverse() # list才有reverse操作,且无return,直接修改原list # print(i, '&',j) # print(s[i:j],'&',tem) if s[i:j]==tem: num.append(len(s[i:j])) if len(s[i:j])==max(num): res = s[i:j] return ''.join(res) # list转字符串的操作
结果:在一个很长的测试上超时了~~我已经习惯了...可怜的小p...
总结:
1.palindromic substring回文串:正着读反着读一样的字符串
2.原生list和numpy倒叙操作:
import numpy as np a=np.array([1,2,3,4,5]) b=[1,2,3,4,5] '''正确用法''' a[::-1] # Out[20]: array([5, 4, 3, 2, 1]) b[::-1] # Out[21]: [5, 4, 3, 2, 1] a[3:1:-1] # Out[25]: array([4, 3]) b[3:1:-1] # Out[26]: [4, 3] '''错误用法''' a[3:1] # Out[24]: array([], dtype=int64) b[3:1] # Out[27]: []
但是,由于list切片前闭后开的特性这里面还是有问题的,
a[1:3] # Out[29]: array([2, 3]) a[3:1:-1] # Out[30]: array([4, 3]) a[2:0:-1] # Out[35]: array([3, 2])
实际上和[n:m]对应的逆序列不是[m:n:-1]而是[m-1:n-1:-1],但是,当m/n中有一个是0的时候,由于-1在切片中指倒数第一的意思,所以会出错,故我采用了.reverse()方法,而非切片的手段。
相关文章推荐
- leetcode演练算法-----mit学习算法,,学习和练习相得益彰
- 常见算法练习leetcode
- LeetCode初级算法练习
- LeetCode 算法练习 Compare Version Numbers
- 算法练习专题——LeetCode系列之 ThreeSum
- 算法练习专题——LeetCode系列之 Two Sum
- 算法练习 - leetcode
- 『LeetCode』练习第四弹_算法6题
- 『LeetCode』练习第二弹_算法3,4题
- leetcode 算法练习 two-sum
- 算法练习_LeetCode_链表1
- 常见算法练习leetcode
- 『LeetCode』练习第一弹_算法1,2题
- 『LeetCode』练习第六弹_算法9题
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- 算法分析与设计丨第三周丨LeetCode(5)——Median of Two Sorted Arrays(Hard)
- 常见算法练习leetcode
- leetcode 第三题 小白用最慢的算法做的
- leetcode外的算法题练习总结(updating)(自言自语)
- 【LeetCode002-003算法/编程练习C++】---Add Two Numbers||寻找最长无重复字母子串。//第三题之后有空要再想一想…