1. 程式人生 > >LeetCode479. 最大回文數乘積

LeetCode479. 最大回文數乘積

479. 最大回文數乘積

你需要找到由兩個 n 位數的乘積組成的最大回文數。

由於結果會很大,你只需返回最大回文數 mod 1337得到的結果。

示例:

輸入: 2

輸出: 987

解釋: 99 x 91 = 9009, 9009 % 1337 = 987

說明:

n 的取值範圍為 [1,8]。

 

ps:超時的解法,只能過6個用例。

依次構造迴文串,再用迴文的數字去除乘數。找到一個可以整除的為最大的。

(n位數乘n位數的數 ,最大應該是2n位數)

class Solution:
    def largestPalindrome(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n ==1 :
            return 9
        lower = 10 ** (n-1)
        upper = 10 **n - 1
        
        temp = upper
        
        
        while(temp>=lower):
            temp1 = str(temp)
            temp2 = temp1[::-1]
            num = temp1+temp2
            i = upper
            while(i * i > int(num)):
                if int(num) % i == 0:
                    return int(num)%1337
                else:
                    i -= 1
            temp -= 1