難度:簡單
給定一個整數 n ,返回?可表示為兩個?
n
?位整數乘積的?最大回文整數?。因為答案可能非常大,所以返回它對?1337
?取余?。示例 1:
輸入:n = 2 輸出:987 解釋:99 x 91 = 9009, 9009 % 1337 = 987示例 2:
輸入:n = 1 輸出:9提示:
1 <= n <= 8
題解:
class Solution:def largestPalindrome(self, n: int) -> int:if n == 1:return 9 # 1位數的最大回文數是9# 生成 n 位數的最大值max_num = int("9" *n) # 例如,n=3時,max_num = 999min_num = 10 ** (n - 1) # n位數的最小值,即100max_palindrome = 0 # 儲存找到的最大回文數# 從最大 n 位數開始逆序遍歷for i in range(max_num, min_num-1, -1):for j in range(i, min_num-1, -1): # j 從 i 開始,以減少重復計算product = i * j# 檢查乘積是否為回文if str(product) == str(product)[::-1]:max_palindrome = max(max_palindrome, product) # 更新最大回文數break # 找到的最大回文數可立即使用return max_palindrome % 1337 # 返回結果對1337取余