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]
posted @ 2019-08-09 18:17  希音  阅读(128)  评论(0编辑  收藏  举报