【Leetcode】564. Find the Closest Palindrome

【Leetcode】564. Find the Closest Palindrome_第1张图片

1 1,2,3到9最近的回文并不是它本身,而是它前面的那个数


【Leetcode】564. Find the Closest Palindrome_第2张图片

1 复杂度太高

2 第二种方法:找到一些candidates,然后从这些candidates中选

3 回文数是有范围的,比如三位数,回文数是在[99, 1001]之间

4 因为回文数是左半边和右半边互为翻转,奇数情况下中间还有一个单独的值;

5 将一个不是回文数的数变成回文数,则可以改变左半边,也可以改变右半边,但题目中说要和原数绝对差最小,所以要改变右半边;

6 改变分成两种:一种是原数就是回文数,这时候就改变中间那个数,比如121改成111或者131;另外一种原数不是回文,改变右边就行,比如123改成121。

7 总结起来就是中间那个值可以+1,-1,0

8 处理的时候,先取出左半边,比如123取出12,1234也取出12,然后根据左半边生成右半边

9 这样把生成的三个回文数加入到candidates set中,再加上之前的两个边界,共有五个candidates,然后在这五个值中找到和原数绝对值最小的那个

10 偶数&1就是0,奇数&1就是1


【Leetcode】564. Find the Closest Palindrome_第3张图片

你可能感兴趣的:(【Leetcode】564. Find the Closest Palindrome)