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)

原文地址:https://www.cnblogs.com/jiage666/p/9745784.html

时间: 2024-11-09 00:49:55

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

欧拉项目004:寻找最大的回文数

Problem 4: Largest palindrome product A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. 寻找有两

LeetCode 9 Palindrome Number (回文数)

翻译 确定一个整数是否是回文数.不能使用额外的空间. 一些提示: 负数能不能是回文数呢?(比如,-1) 如果你想将整数转换成字符串,但要注意限制使用额外的空间. 你也可以考虑翻转一个整数. 然而,如果你已经解决了问题"翻转整数(译者注:LeetCode 第七题), 那么你应该知道翻转的整数可能会造成溢出. 你将如何处理这种情况? 这是一个解决该问题更通用的方法. 原文 Determine whether an integer is a palindrome. Do this without ex

LeetCode Problem 9:Palindrome Number回文数

描述:Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string, note the restriction of using extra space. You could a

LeetCode OJ Palindrome Number(回文数)

1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 int r=0,init=x; 5 if(init==0) return true; 6 if(init<0) return false; 7 while(init!=0){ 8 r=r*10+init%10; 9 init=init/10; 10 } 11 if(r==x) 12 return true; 13 else 14 return false; 15 } 16 };

LeetCode 9. Palindrome Number(回文数)

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121 Output: true Example 2: Input: -121 Output: false Explanation: From left to right, it reads -121. From right to

LeetCode:Palindrome Number - 回文数

1.题目名称 Palindrome Number(回文数) 2.题目地址 https://leetcode.com/problems/palindrome-number 3.题目内容 英文:Determine whether an integer is a palindrome. Do this without extra space. 中文:确认一个整数是否是回文数 4.解题方法1 将数字翻转后判断与原数字是否相等,可以参考LeetCode第7题(Reverse Integer)的解题思路.J

寻找回文数的python的实现

寻找回文数 寻找回文数也是一个比较好玩的题目,也是学习python的一个简单的filter()函数的应用 解决方法:即按照回文数的特点进行即可. 方法一:一行代码解决 #coding=UTF-8 #寻找回文数 def is_palindrome(n): s=str(n) return s[0:len(s)//2]==s[-1:len(s)//2:-1] #return str(n)==str(n)[::-1] #测试 for i in filter(is_palindrome,range(100

leetcode 9 Palindrome Number 回文数

Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string, note the restriction of using ext

Leetcode(9)回文数

Leetcode(9)回文数 [题目表述]: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 第一次:直接全部转 执行用时:148 ms: 内存消耗:13.4MB 效果:还行 class Solution: def isPalindrome(self, x: int) -> bool: s=str(x) if s==s[::-1]: return True else: return False 第二种方法:反转一半数字 执行用时:156 ms: 内存消耗