Pages

Wednesday, September 9, 2009

Euler Problem 38 solution

Time (s): ~0.012
package margusmartseppcode.From_30_to_39;

import java.util.HashSet;
import java.util.Set;

public class Problem_38 {
 static final int nbrs = 9;

 static boolean isPandigital(String s) {
  return isPandigital(s, nbrs);
 }

 static boolean isPandigital(String s, int nr) {
  if (s.length() != nr)
   return false;

  Set<Character> set = new HashSet<Character>();
  for (int i = 0; i < nr; i++)
   set.add(s.charAt(i));

  if (set.size() != nr)
   return false;
  if (set.contains('0'))
   return false;
  return true;
 }

 public static void main(String[] args) {
  String maxPan = "";
  for (int i = 9876; i > 9123; i--)
   if (isPandigital(maxPan = "" + i + (i + i)))
    break;
  System.out.println(maxPan);
 }
}

No comments:

Post a Comment