diff options
| -rw-r--r-- | challenge-107/ziameraj16/README.md | 34 | ||||
| -rw-r--r-- | challenge-107/ziameraj16/java/SelfDescriptiveNumber.java | 44 |
2 files changed, 52 insertions, 26 deletions
diff --git a/challenge-107/ziameraj16/README.md b/challenge-107/ziameraj16/README.md index 4e1a6ecc5e..e7bf263e77 100644 --- a/challenge-107/ziameraj16/README.md +++ b/challenge-107/ziameraj16/README.md @@ -1,37 +1,19 @@ -# Maximum Gap +# Self Descriptive Number ## Java Solution To compile the code run ```java -javac MaximumGap.java +javac SelfDescriptiveNumber.java ``` To run ```java -java MaximumGap +java SelfDescriptiveNumber ``` ### Example ```bash -/perlweeklychallenge-club/challenge-106/ziameraj16/java$ javac MaximumGap.java -/perlweeklychallenge-club/challenge-106/ziameraj16/java$ java MaximumGap -Enter comma separated values -2,9,3,5 -4 -``` -## Kotlin Solution - -To compile the code run -```java -kotlinc MaximumGap.kt -``` -To run -```java -kotlin MaximumGap -``` -### Example -```bash -/perlweeklychallenge-club/challenge-106/ziameraj16/kotlin$ kotlinc MaximumGapKotlin.kt -/perlweeklychallenge-club/challenge-106/ziameraj16/kotlin$ kotlin MaximumGapKotlin -Enter comma separated values -1,3,8,2,0 -5 +/perlweeklychallenge-club/challenge-107/ziameraj16/java$ javac SelfDescriptiveNumber.java +/perlweeklychallenge-club/challenge-107/ziameraj16/java$ java SelfDescriptiveNumber +1210 +2020 +21200 ``` 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; + } + + +} + |
