0

私はいくつかのオンラインの問題を試しています。2 つの 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 に答える