3079. 求出加密整数的和

给你一个整数数组 nums ,数组中的元素都是  整数。定义一个加密函数 encrypt ,encrypt(x) 将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换。比方说 encrypt(523) = 555 且 encrypt(213) = 333 。

请你返回数组中所有元素加密后的  。

示例 1:

输入:nums = [1,2,3]

输出:6

解释:加密后的元素位 [1,2,3] 。加密元素的和为 1 + 2 + 3 == 6 。

示例 2:

输入:nums = [10,21,31]

输出:66

解释:加密后的元素为 [11,22,33] 。加密元素的和为 11 + 22 + 33 == 66 。

提示:

  • 1 <= nums.length <= 50
  • 1 <= nums[i] <= 1000

思路:这道题直观的思路就是进行模拟,对数组中的某个整数,求出他的最大数位,然后转化成一个新的整数,最后求和,思路不难,但上手写了发现好麻烦,需要知道这个整数有几位,然后找到最大数位,最后更新这个数。

翻看题解时,发现了一种很简便的做法,就是把数组中的每个元素转换成字符串,然后用字符串的max直接就可以得到这个整数中的最大数位,然后字符串的乘操作就是得到多个相同的字符('a'*5就是‘aaaaa'),那就很方便地完成了将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换这个要求,最后将其转换成int类型,进行累加得到结果即可。

代码(Python):

class Solution(object):
    def sumOfEncryptedInt(self, nums):
        result = 0
        for i,num in enumerate(nums):
            temp = str(num)
            maxNum = max(temp)
            result += int(maxNum * len(temp))
        return result

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值