欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > Leetcode​​​​​​​3270:求出数字答案

Leetcode​​​​​​​3270:求出数字答案

2025/5/13 14:21:48 来源:https://blog.csdn.net/m0_67598823/article/details/145076481  浏览:    关键词:Leetcode​​​​​​​3270:求出数字答案

题目描述:

给你三个  整数 num1 ,num2 和 num3 。

数字 num1 ,num2 和 num3 的数字答案 key 是一个四位数,定义如下:

  • 一开始,如果有数字 少于 四位数,给它补 前导 0 
  • 答案 key 的第 i 个数位(1 <= i <= 4)为 num1 ,num2 和 num3 第 i 个数位中的 最小 值。

请你返回三个数字 没有 前导 0 的数字答案。

代码思路:

这个代码定义了一个名为 Solution 的类,其中包含一个名为 generateKey 的方法。这个方法接收三个整数参数 num1num2 和 num3,并返回一个整数作为结果。下面是该方法的详细思路解释:

  1. 输入参数:
    • num1: 第一个整数。
    • num2: 第二个整数。
    • num3: 第三个整数。
  2. 目标:
    • 将这三个整数转换成一个统一的、由它们共同构成的“键”。
  3. 实现步骤:
    • 格式化数字:
      • 使用列表推导和字符串格式化函数 f'{num:04}' 将每个数字转换成一个至少四位数的字符串,不足四位的前面补零。这样做的目的是为了确保所有数字在后续处理中有相同的位数,便于字符级别的比较和组合。
    • 并行迭代:
      • 使用 zip 函数并行迭代这三个格式化后的字符串。zip(*(f'{num:04}' for num in (num1, num2, num3))) 会产生一个迭代器,其中每个元素是一个包含三个字符的元组(分别来自 num1num2 和 num3 在相同位置上的字符)。
    • 字符级别比较:
      • 对于每个元组,使用 min(c) 找到这三个字符中的最小字符(根据 ASCII 码值比较)。这一步实际上是在逐位比较三个数字,选择每个位置上“字典序”最小的字符。
    • 合并字符:
      • 使用 ''.join(...) 将所有选出的最小字符合并成一个新的字符串。
    • 转换回整数:
      • 最后,将这个字符串转换回整数返回。这一步假设生成的字符串表示的是一个有效的整数。
  4. 示例:
    • 假设 num1 = 12num2 = 345num3 = 67
    • 格式化后得到 '0012''0345''0067'
    • 并行迭代并找到最小字符得到 '0012'(逐位比较:'0'<'0'<'0', '0'<'3'<'0', '1'<'4'<'6', '2'<'5'<'7'`)。
    • 合并字符得到 '0012'
    • 转换回整数得到 12

 代码实现:

class Solution:def generateKey(self, num1: int, num2: int, num3: int) -> int:return int(''.join(min(c) for c in zip(*(f'{num:04}'for num in (num1, num2, num3)))))

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词