-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolution.java
More file actions
61 lines (51 loc) · 1.66 KB
/
Solution.java
File metadata and controls
61 lines (51 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.Set;
import java.util.HashSet;
public class Solution {
public static void main(String[] args){
String numbers = "011";
System.out.println(solution(numbers));
}
public static int solution(String numbers) {
char[] numToChar = numbers.toCharArray();
int[] numCard = new int[numbers.length()];
for(int i=0; i<numCard.length; i++){
numCard[i] = Integer.parseInt(String.valueOf(numToChar[i]));
}
Set<Integer> primes = new HashSet<>();
for(int i=1; i<numbers.length()+1; i++){
perm(numToChar, 0, i, primes);
}
// System.out.println("size: "+ primes.size());
return primes.size();
}
public static void perm(char[] arr, int depth, int digit, Set primes){
if(depth == digit){
String str = "";
for(int i=0; i<digit; i++){
str += arr[i];
}
if(isPrime(Integer.parseInt(str))){
primes.add(Integer.parseInt(str));
}
} else {
for(int i=depth; i<arr.length; i++){
swap(arr, i, depth);
perm(arr, depth+1, digit, primes);
swap(arr, i, depth);
}
}
}
public static void swap(char[] arr, int i, int j){
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static boolean isPrime(int num){
if(num == 0 || num == 1) return false;
for(int i=2; i<num; i++){
if(num%i == 0) return false;
if(i*i > num) break;
}
return true;
}
}