0

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

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

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

4

5 回答 5

1

String从整数乘积创建一个新的。

于 2012-08-10T06:10:20.890 回答
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 更快),但它真的很简单,这就是我的目标。

于 2012-08-10T06:24:49.590 回答
0

我不会给你写代码,因为它看起来像一个作业,但我会给你一个提示。

首先将 int 转换为字符串。

字符串中的字符与数组非常相似,因此将字符串转换为数组会很容易。

于 2012-08-10T06:10:16.870 回答
0

要将数字转换为数组,您可以试试这个......

Char [] product = String.valueOf("969").toCharArray();
于 2012-08-10T06:10:51.233 回答
0

将您的产品提供给String.valueOf(int),它将转换为字符串,然后使用String.toCharArray()like将其转换为数组

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;
    }
}
于 2012-08-10T06:12:01.593 回答