1. 程式人生 > >力扣題目解答自我總結(二)

力扣題目解答自我總結(二)

ever 重復 one 使用 所有 列表 obj true bbbb

力扣題目解答自我總結(二)

一.回文數

1.題目描述

判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 1:

輸入: 121
輸出: true

示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。

示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個回文數。

2.解答

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if str(x)[::-1] == str(x)[:]: #用切片工具完成字符串的翻轉
            return  True
        else:
            return  False

二.寶石和石頭

1.題目描述

給定字符串J 代表石頭中寶石的類型,和字符串 S代表你擁有的石頭。 S 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。

J 中的字母不重復,JS中的所有字符都是字母。字母區分大小寫,因此"a""A"是不同類型的石頭。

示例 1:

輸入: J = "aA", S = "aAAbbbb"
輸出: 3

示例 2:

輸入: J = "z", S = "ZZ"
輸出: 0

註意:

  • SJ 最多含有50個字母。
  • J 中的字符不重復。

2.解答

class Solution:
    def numJewelsInStones(self, J: str, S: str) -> int:
        
        return sum(S.count(i) for i in J)   #for 循環的一種寫法
    
    #可以吧該函數寫成這樣
        num = 0
        for i in J:
            num_1 = S.count(i)
            num += num_1
        return num

三.旋轉圖像

1.題目描述

給定一個 n × n

的二維矩陣表示一個圖像。

將圖像順時針旋轉 90 度。

說明:

你必須在原地旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。

示例 1:

給定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋轉輸入矩陣,使其變為:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

示例 2:

給定 matrix =
[
  [ 5, 1, 9,11],
  [ 2, 4, 8,10],
  [13, 3, 6, 7],
  [15,14,12,16]
], 

原地旋轉輸入矩陣,使其變為:
[
  [15,13, 2, 5],
  [14, 3, 4, 1],
  [12, 6, 8, 9],
  [16, 7,10,11]
]

2.解答

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        import copy
        new_list = []
        time = 0
        conter = 0
        matrix.reverse()
        matrix_1 = copy.copy(matrix)
        print(matrix)
        if len(matrix) != 0:
            for a in range(len(matrix)):
                matrix[a] = []
            while len(matrix) > len(matrix_1[0]):
                matrix.pop()
            while len (matrix) < len(matrix_1[0]):
                matrix.append([])
            for b in range(len(matrix_1[0])):
                for c in range(len(matrix_1)):
                    if time != len(matrix_1):
                        time += 1
                        matrix[conter].append(matrix_1[c][b])
                    elif time == len(matrix_1):
                        time = 1
                        conter += 1
                        matrix[conter].append(matrix_1[c][b])
#這是我的思路比較low,先水平翻轉,再按照子列表的長度,把他變成有擁有子列表長度一樣的空的列表,再裏面填寫值進去,寫完了頭有點昏,等下次有空再優化下代碼

如果你有更加吊炸天的解題方法留言,讓我這渣渣學學

力扣題目解答自我總結(二)