diff options
Diffstat (limited to 'challenge-107/ziameraj16/java/SelfDescriptiveNumber.java')
| -rw-r--r-- | challenge-107/ziameraj16/java/SelfDescriptiveNumber.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/challenge-107/ziameraj16/java/SelfDescriptiveNumber.java b/challenge-107/ziameraj16/java/SelfDescriptiveNumber.java new file mode 100644 index 0000000000..acfa046fff --- /dev/null +++ b/challenge-107/ziameraj16/java/SelfDescriptiveNumber.java @@ -0,0 +1,44 @@ + +import java.util.HashMap; +import java.util.Map; + +public class SelfDescriptiveNumber { + + public static void main(String[] args) { + int count = 0; + int i = 1; + while (true) { + if (count == 3) { + break; + } + if (isSelfDescriptiveNumber(i)) { + System.out.println(i); + count++; + } + i++; + } + } + + private static boolean isSelfDescriptiveNumber(int number) { + String valueAsString = Integer.valueOf(number).toString(); + Map<Integer, Integer> map = new HashMap(valueAsString.length()); + for (int i = 0; i < valueAsString.length(); i++) { + final int c = Character.getNumericValue(valueAsString.charAt(i)); + if (map.containsKey(c)) { + map.put(c, map.get(c) + 1); + } else { + map.put(c, 1); + } + } + for (int i = 0; i < valueAsString.length(); i++) { + int c = Character.getNumericValue(valueAsString.charAt(i)); + if (map.getOrDefault(i, 0) != c) { + return false; + } + } + return true; + } + + +} + |
