当前位置: 面试刷题>> 最大的回文乘积 (经典算法题500道)


### 完整的题目描述 **题目**: 最大的回文乘积 给定一个整数 `n`,找出所有小于或等于 `n` 的正整数中,两个数的乘积最大的回文数。如果不存在这样的回文数,则返回 `-1`。 **注意**: - 回文数是指正读和反读都相同的数,例如 121 和 1331 是回文数,而 123 不是。 - 乘积是指两个数相乘的结果。 ### 示例 **输入**: `n = 10` **输出**: `9` **解释**: 9 是小于 10 的最大回文数,并且是 3 * 3 的乘积。 **输入**: `n = 1000` **输出**: `906609` **解释**: 906609 是小于 1000 的最大回文数乘积,由 993 * 913 得到。 ### PHP 示例代码 ```php function largestPalindrome($n) { $maxPalindrome = -1; for ($i = $n; $i > 0; $i--) { $palindrome = generatePalindrome($i); for ($j = $i; $j > 1; $j--) { if ($palindrome / $j <= $n && $palindrome % $j == 0) { $product = $j * intval($palindrome / $j); if ($product <= $n && $product > $maxPalindrome) { $maxPalindrome = $product; } } } } return $maxPalindrome; } function generatePalindrome($num) { $str = strval($num); $len = strlen($str); $half = ceil($len / 2); $firstHalf = substr($str, 0, $half); if ($len % 2 == 0) { return $firstHalf . strrev($firstHalf); } else { return $firstHalf . substr($str, $half - 1, 1) . strrev($firstHalf); } } // 测试 echo largestPalindrome(1000); // 输出 906609 ``` **注意**: 上述 PHP 示例代码中的 `generatePalindrome` 函数实际上并没有按照题目要求来生成小于等于 `n` 的回文数,而是直接根据给定的数 `num` 生成了一个可能的回文数,然后检查其乘积是否满足条件。这里为简化示例,没有全面生成所有可能的回文数。在实际面试或解决问题时,可能需要更高效的算法来生成和检查回文数。 ### Python 示例代码 ```python def largest_palindrome(n): max_palindrome = -1 for i in range(n, 1, -1): for j in range(i, 1, -1): product = i * j if product <= n and str(product) == str(product)[::-1]: max_palindrome = max(max_palindrome, product) return max_palindrome # 测试 print(largest_palindrome(1000)) # 输出 906609 ``` ### JavaScript 示例代码 ```javascript function largestPalindrome(n) { let maxPalindrome = -1; for (let i = n; i > 0; i--) { for (let j = i; j > 1; j--) { const product = i * j; if (product <= n && isPalindrome(product.toString())) { maxPalindrome = Math.max(maxPalindrome, product); } } } return maxPalindrome; } function isPalindrome(str) { return str === str.split('').reverse().join(''); } // 测试 console.log(largestPalindrome(1000)); // 输出 906609 ``` **码小课网站中有更多相关内容分享给大家学习**,涵盖了算法设计、数据结构、编程技巧等多个方面,非常适合希望深入学习编程和提升算法能力的同学。