跳转至

3783. 整数的镜像距离

题目描述

给你一个整数 n

定义它的 镜像距离 为:abs(n - reverse(n))​​​​​​​,其中 reverse(n) 表示将 n 的数字反转后形成的整数。

返回表示 n 的镜像距离的整数。

其中,abs(x) 表示 x 的绝对值。

 

示例 1:

输入: n = 25

输出: 27

解释:

  • reverse(25) = 52
  • 因此,答案为 abs(25 - 52) = 27

示例 2:

输入: n = 10

输出: 9

解释:

  • reverse(10) = 01,即 1。
  • 因此,答案为 abs(10 - 1) = 9

示例 3:

输入: n = 7

输出: 0

解释:

  • reverse(7) = 7
  • 因此,答案为 abs(7 - 7) = 0

 

提示:

  • 1 <= n <= 109

解法

方法一:模拟

我们定义一个函数 \(\text{reverse}(x)\) 来反转整数 \(x\) 的数字。具体地,我们初始化一个变量 \(y\)\(0\),然后不断地将 \(x\) 的最后一位数字添加到 \(y\) 的末尾,并将 \(x\) 去掉最后一位,直到 \(x\) 变为 \(0\)。最终 \(y\) 即为反转后的整数。

接下来,我们计算整数 \(n\) 的镜像距离,即 \(\text{abs}(n - \text{reverse}(n))\),并返回结果。

时间复杂度 \(O(\log n)\),空间复杂度 \(O(1)\),其中 \(n\) 是输入整数的大小。

1
2
3
class Solution:
    def mirrorDistance(self, n: int) -> int:
        return abs(n - int(str(n)[::-1]))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Solution {
    public int mirrorDistance(int n) {
        return Math.abs(n - reverse(n));
    }

    private int reverse(int x) {
        int y = 0;
        for (; x > 0; x /= 10) {
            y = y * 10 + x % 10;
        }
        return y;
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Solution {
public:
    int mirrorDistance(int n) {
        auto reverse = [](int x) -> int {
            int y = 0;
            for (; x; x /= 10) {
                y = y * 10 + x % 10;
            }
            return y;
        };
        return abs(n - reverse(n));
    }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
func mirrorDistance(n int) int {
    reverse := func(x int) int {
        y := 0
        for ; x > 0; x /= 10 {
            y = y*10 + x%10
        }
        return y
    }
    return abs(n - reverse(n))
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function mirrorDistance(n: number): number {
    const reverse = (x: number): number => {
        let y = 0;
        for (; x > 0; x = Math.floor(x / 10)) {
            y = y * 10 + (x % 10);
        }
        return y;
    };
    return Math.abs(n - reverse(n));
}

评论