문제

I was trying to solve a problem of Project Euler with Java. The Problem 4.

http://projecteuler.net/problem=4

It said I had to find the largest palindrome made from the product of two 3-digit numbers.

So here is the code (just the part that isn't working) :

public class Problem4PE {
    public static void main(String[] args){
        int result = 0;
        Integer output = 0;

        for (int i = 100; i < 1000; i++) {
            for (int j = 100; j < 1000; j++) {
                output = i*j;
                String strout = output.toString();
                StringBuilder stb = new StringBuilder();

                char[] chrout = strout.toCharArray();
                for (int x = 0; x < chrout.length; x++) {
                    stb.append(chrout[x]);
                }
                StringBuilder stres = new StringBuilder("");
                for (int k = chrout.length-1; k > -1 ; k--) {
                    stres.append(chrout[k]);
                }
                String stbb = stb.toString();
                String string = stres.toString();
                Boolean bool = stbb.equals(string);
                if (bool){
                    result = output;
                }

            }
        }
        System.out.println(result);
    }
}

So aboves output comes out : 580085 But when I submit it, it shows incorrect. I do not understand why. So could you please tell me whether the problem is in code, or I had a mistake in understanding the question.

도움이 되었습니까?

해결책 2

Try this

if (bool && output > result) { // a second if condition.
  result = output;
}

It gives me the correct answer.

다른 팁

Your code skips over the largest product.

result isn't guaranteed to increase between two iterations of your for loops, so the final value of result isn't the largest.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top