-
题目:给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。1
-
实例:
# 示例一
输入:n = 2
输出:987
解释:99 x 91 = 9009, 9009 % 1337 = 987
# 示例二
输入: n = 1
输出: 9
-
提示:
1 <= n <= 8
-
思路:
若n等于1,返回9;若n为2,最大回文数乘积的范围在10-99之间,逆序遍历从99-10 i,构造出一个回文字符串并化为整型
再在前一个遍历中继续遍历从99-10的值j,加入两个条件,若jend小于构造的回文数则跳出,因为jend绝大多数情况下小于构造的回文数,若构造的回文数取余j为0,即能整除,返回回文数取余1337。
- 解法一:
class Solution:
def largestPalindrome(self, n: int) -> int:
if n == 1:
return 9
start, end = 10 ** (n - 1), 10 ** n - 1
for i in range(end, start, -1):
palindrome = int(str(i) + str(i)[::-1])
for j in range(end, start, -1):
if j * end < palindrome:
break
if palindrome % j == 0:
return palindrome % 1337
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/most-common-word ↩︎