力扣題目彙總(最長特殊序列,迴文數,移動零)

最長特殊序列 Ⅰ

1.題目描述

  1. 給定兩個字符串,你須要從這兩個字符串中找出最長的特殊序列。最長特殊序列定義以下:該序列爲某字符串獨有的最長子序列(即不能是其餘字符串的子序列)。python

    子序列能夠經過刪去字符串中的某些字符實現,但不能改變剩餘字符的相對順序。空序列爲全部字符串的子序列,任何字符串爲其自身的子序列。數組

    輸入爲兩個字符串,輸出最長特殊序列的長度。若是不存在,則返回 -1。app

    示例 :函數

    輸入: "aba", "cdc"
    輸出: 3
    解析: 最長特殊序列可爲 "aba" (或 "cdc")

    說明:工具

    1. 兩個字符串長度均小於100。
    2. 字符串中的字符僅含有 'a'~'z'。

2.解題思路

首先先把特例幹掉
輸入爲兩個字符串,輸出最長特殊序列的長度。若是不存在,則返回 -1。
其次按照題目描述走

3.解題

class Solution:
    def findLUSlength(self, a: str, b: str) -> int:
        if a == b :
            return -1
        return max(len(a),len(b))

迴文數

1.題目描述

  1. 判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。excel

    示例 1:code

    輸入: 121
    輸出: true

    示例 2:leetcode

    輸入: -121
    輸出: false
    解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。所以它不是一個迴文數。

    示例 3:字符串

    輸入: 10
    輸出: false
    解釋: 從右向左讀, 爲 01 。所以它不是一個迴文數。

2.解題思路

用切片工具進反轉

3.解題

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if str(x)[::-1] == str(x)[:]:
            return  True
        else:
            return  False

移動零

1.題目描述

    1. 給定一個數組 nums,編寫一個函數將全部 0 移動到數組的末尾,同時保持非零元素的相對順序。get

      示例:

      輸入: [0,1,0,3,12]
      輸出: [1,3,12,0,0]

      說明:

      1. 必須在原數組上操做,不能拷貝額外的數組。
    2. 儘可能減小操做次數。

2.解題思路

個人思路是先記錄0的數量,把0刪光,再根據計數0的個數末尾加上去

3.解題

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        num_0 = 0
        while 0 in nums:
            index_0 = nums.index(0)
            nums.pop(index_0)
            num_0 += 1
        for a in range(num_0):
            nums.append(0)

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索