zoukankan      html  css  js  c++  java
  • [Leetcode] 564. 寻找最近的回文数

    题目链接:https://leetcode-cn.com/problems/find-the-closest-palindrome
    分析:
    是一道数学题。
    距离最近的回文子串,总计三种可能情况。一是左半边拷贝到右半边,二是中间为0,则一半减一,再拷贝,三是中间为9,则一半加一,再拷贝。还有一些特殊情况。针对三位数,最近回文串范围一定在[99,1001]之间,则再加上两种情况。总共五种,减去与自身重复的选项。放进set。找到diff最小,若相同,则数值较小的结果,再输出。
    Python

    class Solution:
        def nearestPalindromic(self, n: str) -> str:
            ans_set = set()
            p1 = pow(10, len(n)-1)-1
            p2 = pow(10, len(n))+1
            ans_set.add(p1)
            ans_set.add(p2)
            mid = len(n)//2 
            for i in [-1, 0, 1]:
                temp = str(int(n[: mid+(len(n)&0x01)])+i)
                ans_set.add(int(temp + temp[-1-(len(n)&0x01)::-1]))
            ans_set.discard(int(n))
            mindiff = float('inf')
            res = n
            for i in ans_set:
                if abs(int(n) - i) < mindiff:
                    mindiff = abs(int(n) - i)
                    res = str(i)
                elif abs(int(n) - i) == mindiff:
                    res = str(min(i, int(res)))
            return res
    
  • 相关阅读:
    触发器
    自定义变量
    系统变量
    Interval 计时器
    Ajax 之 DWR
    cssTest
    Ajax之XMLHttpRequst对象
    添加页面元素
    jquery 基础
    jQuery 自定义动画效果
  • 原文地址:https://www.cnblogs.com/zuotongbin/p/13805480.html
Copyright © 2011-2022 走看看