给你一个整数数组 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