码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】1432. Max Difference You Can Get From Changing an Integer

时间:2020-06-03 23:33:43      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:col   代码   最大值   nat   result   for   lead   ros   第一个   

题目如下:

You are given an integer num. You will apply the following steps exactly two times:

  • Pick a digit x (0 <= x <= 9).
  • Pick another digit y (0 <= y <= 9). The digit y can be equal to x.
  • Replace all the occurrences of x in the decimal representation of num by y.
  • The new integer cannot have any leading zeros, also the new integer cannot be 0.

Let a and b be the results of applying the operations to num the first and second times, respectively.

Return the max difference between a and b.

Example 1:

Input: num = 555
Output: 888
Explanation: The first time pick x = 5 and y = 9 and store the new integer in a.
The second time pick x = 5 and y = 1 and store the new integer in b.
We have now a = 999 and b = 111 and max difference = 888

Example 2:

Input: num = 9
Output: 8
Explanation: The first time pick x = 9 and y = 9 and store the new integer in a.
The second time pick x = 9 and y = 1 and store the new integer in b.
We have now a = 9 and b = 1 and max difference = 8

Example 3:

Input: num = 123456
Output: 820000

Example 4:

Input: num = 10000
Output: 80000

Example 5:

Input: num = 9288
Output: 8700

Constraints:

  • 1 <= num <= 10^8

解题思路:最大值很好求,把第一个不是9的数字替换成9即可。最小值分两种情况,如果最高位不为1,那么替换成1;否则,找出第一个不为0的数字替换成0。

代码如下:

class Solution(object):
    def maxDiff(self, num):
        """
        :type num: int
        :rtype: int
        """
        str_num = str(num)
        max_replace = 9
        min_replace = 0
        for i in str_num:
            if i != 9:
                max_replace = i
                break

        replace_val = 0
        if str_num[0] != 1:
            min_replace = str_num[0]
            replace_val = 1
        else:
            for i in str_num:
                if i != 0 and i != str_num[0]:
                    min_replace = i
                    break

        max_num = str_num.replace(max_replace,9)
        min_num = str_num.replace(min_replace,replace_val)
        return int(max_num) - int(min_num)

 

【leetcode】1432. Max Difference You Can Get From Changing an Integer

标签:col   代码   最大值   nat   result   for   lead   ros   第一个   

原文地址:https://www.cnblogs.com/seyjs/p/13040510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!