2119. 反转两次的数字
题目描述
反转 一个整数意味着倒置它的所有位。
- 例如,反转
2021得到1202。反转12300得到321,不保留前导零 。
给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。
示例 1:
输入:num = 526 输出:true 解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。
示例 2:
输入:num = 1800 输出:false 解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。
示例 3:
输入:num = 0 输出:true 解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。
提示:
0 <= num <= 106
解法
方法一:数学
思考
反转整数会丢掉前导零,因而第二次反转能否回到原数,取决于第一次是否丢掉了末尾零。对 \(num\) 做两次真实反转即可验证,但数字范围虽不大,仍可直接看数位性质。
若 \(num=0\),两次反转仍为 \(0\)。否则,第一次反转丢掉末尾零当且仅当 \(num\) 含因子 \(10\),即个位为 \(0\)。
因此当且仅当 \(num=0\) 或 \(num\bmod 10\neq 0\) 时答案为真。
如果数字是 \(0\),或者数字的个位不是 \(0\),那么反转两次后的数字一定和原数字相等。
时间复杂度 \(O(1)\),空间复杂度 \(O(1)\)。
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 | |
1 2 3 | |
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 7 | |