Skip to content

Instantly share code, notes, and snippets.

@timbaev
Created June 5, 2018 20:44
Show Gist options
  • Save timbaev/12da73bad62c6d8d5ab41fddc84084a8 to your computer and use it in GitHub Desktop.
Save timbaev/12da73bad62c6d8d5ab41fddc84084a8 to your computer and use it in GitHub Desktop.
Find two numbers consisting of 3 or 5 digits, and that these figures in the number are all odd or even
import java.util.ArrayList;
import java.util.List;
public class Numbers {
public static void main(String[] args) {
int[] numbers = { 95017, 12059, 594, 524, 867, 777, 192, 93707, 51489, 43046, 25, 66, 68240 };
List<Integer> answers = new ArrayList<>();
// Answer: 777, 68240
for (int number : numbers) {
int copyNumber = number;
int length = length(number);
if (length == 3 || length == 5) {
Boolean findingEven = null;
boolean isSuitable = true;
while (number > 0) {
int digit = number % 10;
if (digit % 2 == 0) {
if (findingEven == null || findingEven) {
findingEven = true;
number = number / 10;
} else {
isSuitable = false;
break;
}
} else {
if (findingEven == null || !findingEven) {
findingEven = false;
number = number / 10;
} else {
isSuitable = false;
break;
}
}
}
if (isSuitable) {
answers.add(copyNumber);
}
}
}
System.out.println(answers);
}
// Optimal method for speed and memory
private static int length(int number) {
if (number < 100000) {
if (number < 100) {
if (number < 10) {
return 1;
} else {
return 2;
}
} else {
if (number < 1000) {
return 3;
} else {
if (number < 10000) {
return 4;
} else {
return 5;
}
}
}
} else {
if (number < 10000000) {
if (number < 1000000) {
return 6;
} else {
return 7;
}
} else {
if (number < 100000000) {
return 8;
} else {
if (number < 1000000000) {
return 9;
} else {
return 10;
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment