zoukankan      html  css  js  c++  java
  • 【leetcode】1432. Max Difference You Can Get From Changing an Integer

    题目如下:

    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)
  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/seyjs/p/13040510.html
Copyright © 2011-2022 走看看