- 问题
Find the largest palindrome made from the product of two n-digit numbers.
Since the result could be very large, you should return the largest palindrome mod 1337.
Example:
Input: 2
Output: 987
Explanation: 99 x 91 = 9009, 9009 % 1337 = 987
Note:
The range of n is [1,8].
2.描述
题目是求出n位整数的最大回文数。解题思路,是先从前完后构造回文数,然后判断回文数是否在最大n位整数相乘的区间内,如果在判断对n为整数进行整除,如果整除说明存在返回。
3. 代码
class Solution {
public int largestPalindrome(int n) {
if (n == 1) return 9;
int power= (int) Math.pow(10,n) -1 ;
int low = power / 10;
for (int i = power;i>low;i--){
long palindrome = createPalindrome(i);
for (int j = power;j>low;j--){
if (palindrome / j > power){
break;
}
if (palindrome % j == 0){
return (int) (palindrome%1337);
}
}
}
return -1 ;
}
private static long createPalindrome(long num) {
String s = num +new StringBuilder(Long.toString(num)).reverse().toString();
return Long.parseLong(s);
}
}