LeetCode刷题笔记19-5-16

合并两个有序数组

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3

输出:
[1,2,2,3,5,6]

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        ret=0
        for ind in range(m,len(nums1)):
            nums1[ind]=999
        for num2 in nums2:
            ret=num2
            i=0
            while(i<len(nums1)):
                if ret<=nums1[i] :
                    nums1[i],ret=ret,nums1[i]
                    i+=1
                    continue
                if ret==999:
                    break
                i+=1

125.验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: “A man, a plan, a canal: Panama”
输出: true

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s=s.lower()
        new=str()
        for char in s:
            if char.isalnum():
                new+=char
        new=''.join(new)
        new_T=new[::-1]
        if new==new_T:
            return True
        return False

分割回文串

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回 s 所有可能的分割方案。

示例:

输入: “aab”
输出:
[
[“aa”,“b”],
[“a”,“a”,“b”]
]

class Solution(object):
    def dfs(self, s, path, res):
        if not s:     #如果分到最后s为空,则,一定是回文串
            res.append(path)
            return
        for i in range(len(s)):
            tmp = s[:i + 1]     #字符串,list都可以取到len之后
            if tmp==tmp[::-1]:
                self.dfs(s[i + 1:], path + [tmp], res)

    def partition(self, s):
        """
        :type s: str
        :rtype: List[List[str]]
        """
        res = []
        self.dfs(s, [], res)
        return res

你可能感兴趣的:(LeetCode)