【Leetcode】479. Largest Palindrome Product

Find the largest palindrome made from the product of two n-digit numbers.

Since the result could be very large, you should return the largest palindrome mod 1337.

class Solution(object):

    def largestPalindrome(self, n):

        """

        :type n: int

        :rtype: int

        """

        if n==1: return 9

        for i in range(10**n-1, 10**(n-1)-1, -1):

            palin = int(str(i)+str(i)[::-1])

            for j in range(10**n-1, 10**(n-1)-1, -1):

                if j**2<palin:

                    break

                else:

                    if palin%j==0:

                        return palin%1337

1 n=1时,最大乘积是81,不是回文数,两位数的回文数(77,66,55,。。。,11)都无法通过两个一位数的乘积得到,而1到9都是回文数,且都可以通过两个一位数相乘得到,所以返回最大回文数9;

2 n>1时,两个数相乘得到的最大回文数必定是2*n位

3 先建立回文数,再判断这个回文数是否可以由两个n位数相乘得到

4 判断过程:从最大的n位数开始遍历,最大的n位数就是10**n-1,最小的两位数是10**(n-1)

5 遍历的时候,我们用n位数当做回文数的前半段,翻转一下得到后半段,然后再判断能否由两个n位数相乘得到

6 我们遍历的时候还是从最大n位数开始遍历,结束条件是n位数的平方大于回文数

7 palin = int(str(i)+str(i)[::-1])这里要写成str(i)[::-1],不能写成str(i[::-1]),i是integer,需要在转换成str后再reverse

8  if j**2<palin: break 当遍历的数太小后,直接跳出当前循环,因为既然遍历到小数来了,那一定遍历过大数,之前已经验证过了的

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    AIM外星人阅读 1,312评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,925评论 0 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,379评论 0 19
  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 2,323评论 0 3
  • 粉皮是我的老家晋东南地区的特产,由土豆粉做成,颜色发白,半透明,是一种直径约20公分的又脆又硬的薄圆饼。 粉皮的重...
    细雨呢喃123阅读 930评论 2 1

友情链接更多精彩内容