給你一個整數數組?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 = 0for i,num in enumerate(nums):temp = str(num)maxNum = max(temp)result += int(maxNum * len(temp))return result