Matthew, no. because an 8 digit number could be 12345679 which is not pandigital.
it is probably just a matter of casting but i am not sure.
i am also curious how a set is simpler than a list, but that is just one more thing for me to research
i think i see a solution. if i change my ArrayList to hold ints instead, and convert the chars to ints before storing them. also as Matthew suggested using a Set will be better. i still haven't changed to a Set yet, or tried it, but it compiles. i never would have got away with ArrayList<char> in the first place.
Joined: Mar 12, 2011
Randall Twede wrote:Matthew, no. because an 8 digit number could be 12345679 which is not pandigital.
He's not talking about the size of the number. He's talking about the size of the set. Dump all the digits into a Set. If the set contains fewer than 10 elements, the number is not pandigital. No need for contains or any other comparison of characters.
i got it working using ArrayList, but when i changed to Hashset i get the wrong answer. i cant seem to see the problem right now
the new code allows duplicates
and as you can see with a 9 digit number it returned true instead of false when digits did not contain 9
What is the largest n-digit pandigital prime that exists?";//7652413 or 887645321
the first number is correct the second number is what i get with the new code using a Set
i am pretty sure this is the old code that gave the correct answer.
i changed the local variables to class variables so as not to create so many objects.
i figured it out.
line 16: for(int i = 1; i <= digits.size(); i++)
should be: for(int i = 1; i <= string.length(); i++)