欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

力扣题目解答自我总结(二)

程序员文章站 2022-10-06 07:56:45
力扣题目解答自我总结(二) 一.回文数 1.题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 示例 2: 示例 3: 2.解答 二.宝石和石头 1.题目描述 给定字符串 代表石头中宝石的类型,和字符串 代表你拥有的石头。 中每个字符代表了 ......

力扣题目解答自我总结(二)

一.回文数

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,先水平翻转,再按照子列表的长度,把他变成有拥有子列表长度一样的空的列表,再里面填写值进去,写完了头有点昏,等下次有空再优化下代码

如果你有更加吊炸天的解题方法留言,让我这渣渣学学