最大回文数乘积

题目描述(来源于LeetCode)

给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def largestPalindrome(self, n: int) -> int:
if n == 1:
return 9

max_num = 10**n - 1
min_num = 10**(n-1)

for a in range(max_num, min_num - 1, -1):
palindrome = int(str(a) + str(a)[::-1])
b = max_num
while b * b >= palindrome:
if palindrome % b == 0:
return palindrome % 1337
b -= 1

return 0

复杂度分析

  • 时间复杂度:O(N2)O(N^2)
  • 空间复杂度:O(1)O(1)