leetcode------564. 寻找最近的回文数

Posted jiage666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode------564. 寻找最近的回文数相关的知识,希望对你有一定的参考价值。

class Solution:
    def nearestPalindromic(self, n):
        """
        :type n: str
        :rtype: str
        """
        b=list(n)
        c=list(n)
        e=list(n)
        l=len(n)
        if (l%2==0):
            mid=l//2
        else:
            mid=l//2+1


        if (int(n)<=10):
            return (str(int(n)-1))

        if n==11:
            return (9)

        else:
            #equal
            for x in range(mid):
                if (b[x]!=b[l-x-1]):
                    b[l-x-1]=b[x]
            f=‘‘.join(b)
            #print(f)
            
            #larger
            d=str(int(n[0:mid])+1)
            if len(d)>mid:
                c.append(0)
                for y in range(len(d)):
                    c[y]=d[y]
                    if (c[y]!=c[l-y]):
                        c[l-y]=c[y]
            else:
                for y in range(len(d)):
                    c[y]=d[y]
                    if (c[y]!=c[l-y-1]):
                        c[l-y-1]=c[y]
            g=‘‘.join(c)
            #print(g)

            #smaller
            d=str(int(n[0:mid])-1)
            if len(d)<mid:
                e.pop()
                for z in range(len(d)):
                    e[z]=d[z]
                    if (e[z]!=e[l-z-2]):
                        e[l-z-2]=e[z]
                e[len(d)]=d[len(d)-1]
            else:
                for z in range(len(d)):
                    e[z]=d[z]
                    if (e[z]!=e[l-z-1]):
                        e[l-z-1]=e[z]
            h=‘‘.join(e)
            #print(h)
        #print(‘***************************‘)
        rf=abs(int(f)-int(n))
        rg=abs(int(g)-int(n))
        rh=abs(int(h)-int(n))
        if f==n:
            if (rg<rh):
                return (g)
            else:
                return (h)

        else:
            if rf==rh:
                return (str(min(int(f),int(h))))
            else:
                r=[rf,rg,rh]
                t=r.index(min(r))
                if t==0:
                    return (f)
                elif t==1:
                    return (g)
                else:
                    return (h)

 

以上是关于leetcode------564. 寻找最近的回文数的主要内容,如果未能解决你的问题,请参考以下文章

leetcode------564. 寻找最近的回文数

leetcode 564,546

LeetCode 564. Find the Closest Palindrome

[Leetcode] 564. Find the Closest Palindrome 解题报告

LeetCode 564. Find the Closest Palindrome 锛堟瀯閫狅級

在 codeigniter Active Record 中执行和不执行之前的回显查询