题目:
一个回文数指的是从左向右和从右向左读都一样的数字。最大的由两个两位数乘积构成的回文数是9009 = 91 * 99.
找出最大的由两个三位数乘积构成的回文数。
解题方法:
解题的关键在于构造两个方法,一个方法用于计算两个n位数(在本题中n=3)的乘积,另一个方法用于判断乘积是否为回文数。
程序:
public class LargestPalindromeProduct {
//10的n次幂
public static int power(int n){
int result=1;
for(int i=0;i<n;i++)
{
result*=10;
}
return result;
}
//判断是否为回文数
public static boolean isPalindrome(int s){
String str=s+"";
int [] intArray=new int[str.length()];
for(int i=0;i<str.length();i++)
{
char ch=str.charAt(i);
intArray[i]=new Integer(ch);
}
for(int i=0;i<str.length()/2;i++)
{
if(intArray[i]!=intArray[str.length()-1-i]) return false;
}
return true;
}
public static int largestPalindromeProduct(int n){
int multiply=0;
int maxPalindrome=0;
for(int i=power(n)-1;i>=power(n-1);i--)
{
for(int j=i;j>=power(n-1);j--)
{
multiply=i*j;
if(isPalindrome(multiply))
{
if(multiply>maxPalindrome) maxPalindrome=multiply;
}
}
}
return maxPalindrome;
}
public static void main(String[] args) {
long start=System.currentTimeMillis();
System.out.println(LargestPalindromeProduct.largestPalindromeProduct(3));
long end=System.currentTimeMillis();
System.out.println((end-start)+"毫秒");
}
}