将计算值存储到数组中

时间:2012-08-10 06:02:14

标签: java arrays

我正在尝试一些在线问题。我编写了如何解决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;

然后我将从最后一个索引开始输出到第一个索引,然后测试它是否等于原始数字。

编辑: 我的问题是,如何将计算产品存储到数组中?

5 个答案:

答案 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;
    }
}