564. 寻找最近的回文数(2022-3-2)
给定一个表示整数的字符串 n
,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。
“最近的”定义为两个整数差的绝对值最小。
示例 1:
输入: n = “123”
输出: “121”
示例 2:
输入: n = “1”
输出: “0”
解释: 0 和 2是最近的回文,但我们返回最小的,也就是 0。
提示:
1 <= n.length <= 18
n
只由数字组成n
不含前导 0n
代表在[1, 10^18 - 1]
范围内的整数
解题思路
一道“仁慈”的困难题,逻辑倒是不难,难就难在边界问题上。
方法一:究极笨方法
毫无边界问题,就是会超时,加一往上找回文,然后减一往下找回文,如果距离n
的距离大于上边回文的距离,就停止。总之就是很易懂。另外n<=10^18
所以要用bigint
。
var nearestPalindromic = function(n) {
const _n = BigInt(n)
let ret = _n,tep = _n
while(ret == _n || !check(tep)){
tep = tep + 1n
}
while(tep == _n || !check