题目描述:
给你一个整数 n。
定义它的 镜像距离 为:abs(n - reverse(n)),其中 reverse(n) 表示将 n 的数字反转后形成的整数。
返回表示 n 的镜像距离的整数。
其中,abs(x) 表示 x 的绝对值。
题目链接:3783. 整数的镜像距离 - 力扣(LeetCode)
解题思路:
创建变量 x 存储 n 的翻转值,最后返回 x 与 n 的差值绝对值。
有两点注意的地方:
① 获得翻转值:对 n 不断取余数,然后乘以 10 进行加和
② 结果需返回正整数。
代码如下:
cpp
class Solution {
public:
int mirrorDistance(int n) {
int x = 0;
int y = n;
while ( y ){
x = x * 10 + y % 10;
y /= 10;
}
return abs ( n - x );
}
};
另外:
关于翻转原本最开始的想法是将 n 转为字符串,然后字符串再翻转,再转为数字, 但这个过程太繁琐了。因为没有前置 0,所以不必考虑大整数。翻转后的数值绝对不会溢出。