我正在尝试一些在线问题。我编写了如何解决2个两位数字的最大回文产品。例如91 * 99 = 9009。我设法通过使用递归函数来做到这一点,但我想知道如何使用像这样的数组呢?
product[0]=9;
product[1]=0;
product[2]=0;
product[3]=9;
或如果计算的乘积是969;
product[0]=9;
product[1]=6;
product[2]=9;
然后我将从最后一个索引开始输出到第一个索引,然后测试它是否等于原始数字。
编辑: 我的问题是,如何将计算产品存储到数组中?
答案 0 :(得分:1)
从整数产品中创建一个新的String
。
答案 1 :(得分:1)
没有理由使用数组解决Project Euler问题。但是如果你注意它,那么有一个简单的算法可以将数字数组转换为数字。就这样做:
int number = 0;
int number_2 = 0;
//going forwards:
for (int i = 0; i < array.length; i++)
{
number = number * 10 + array[i];
}
//going backwards:
for (int i = array.length - 1; i >= 0; i--)
{
number_2 = number_2 * 10 + array[i];
}
if (number == number_2)
{
//you have a palindrome
}
这不是最有效的方法,我知道(@ Nandkumar的速度更快),但它真的很简单,这就是我的目标。
答案 2 :(得分:0)
我不会写你的代码,因为它看起来像一个任务,但我会给你一个提示。
首先将int转换为字符串。
字符串中的字符与数组非常相似,因此将字符串转换为数组很容易。
答案 3 :(得分:0)
要将数字转换为数组,您可以试试这个......
Char [] product = String.valueOf("969").toCharArray();
答案 4 :(得分:0)
将您的产品提供给String.valueOf(int)
,它将转换为字符串,然后使用String.toCharArray()
将其转换为数组
boolean palindrome = true;
int product = 9009; // or any calculated number
char str[] = String.valueOf(product).toCharArray();
for(int i=0,j=str.length-1; i!=j ;i++,j--) {
if(str[i] == str[j]){
continue;
} else {
palindrome = false;
break;
}
}