leetcode2
leetcode 4
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
nums1.extend(nums2)
nums1.sort()
if len(nums1) % 2 == 0:
return (nums1[len(nums1) // 2 ]+nums1[len(nums1) // 2 - 1 ])/2
else:
return nums1[len(nums1) // 2 ]
python中extends方法:合并两个list
leetcde5
1,以中心扩展方法
class Solution():
def longestPalindrome(self,s):
self.start = 0 # 初始位置
self.max_len = 0 # 子串初始长度
n = len(s)
if n < 2:
return s
def helper(i, j): # 中心向外扩展
while i >= 0 and j < n and s[i] == s[j]:
i -= 1
j += 1
if self.max_len < j - i - 1: # 这是回文子串最大长度的更新
self.max_len = j - i - 1
self.start = i + 1 # 起始点后移
for k in range(n):
helper(k, k) # 子串长度为奇数, 对称中心为一个数
helper(k, k +1) # 子串长度为偶数,对称中心为两位数
return s[self.start:self.start + self.max_len]
以每个字母为回文串的结束标志,分别考虑可能回文为奇数和偶数的情况
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
n = len(s)
if n < 2 or s == s[::-1]:
return s
max_len = 1
start = 0
for i in range(1,n):
even = s[i-max_len:i+1]
odd = s[i-max_len-1:i+1]
if i-max_len-1>=0 and odd == odd[::-1]:
start = i-max_len-1
max_len += 2
continue
if i-max_len>=0 and even == even[::-1]:
start = i-max_len
max_len += 1
return s[start:start+max_len]