Идея такая:
Есть список с числами (напр. 321, 1098, 415 ...)
lst.get(0) = 321;
lst.get(1) = 1098;
...
Нужно написать регулярное выражение, чтобы можно было проверить наличие цифр числа N в списке, т.е.
lst.get(0) = 321
N = 321 - true
N = 213 - true
N = 123 - true
N = 32 - false
N = 331 - false
6 час сижу, не получается, прошу помощи.
Код не смотрите, там неверно все.
package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
/*
Алгоритмы-числа
*/
public class Solution {
private static ArrayList<Long> unicColl = new ArrayList<>();
// private static ArrayList<Long> comp = new ArrayList<>();
public static long[] getNumbers(long N) {
ArrayList<Long> list = new ArrayList<>();
for (long i = 1; i <N ; i++) {
unic(N);
}
for (int i = 0; i <unicColl.size() ; i++) {
long ch = checkc(unicColl.get(i));
if (ch<N){
list.add(ch);
}
}
long[] result = new long[list.size()];
for (int i = 0; i <list.size() ; i++) {
result[i] = list.get(i);
}
Arrays.sort(result);
return result;
}
public static long checkc(long unicColl) {
long result = 0;
int count = String.valueOf(unicColl).length();
int[] mss = new int[count];
for (int j = 0; j < count; j++) {
mss[j] = (int) unicColl % 10;
unicColl = unicColl / 10;
}
for (int j = 0; j < mss.length; j++) {
result += Math.pow(mss[j], count);
}
return result;
}
public static void unic(long N) {
String Ns = String.valueOf(N);
for (int i = 0; i < unicColl.size(); i++) {
String numS = String.valueOf(i);
if (!(numS.matches("[" + Ns + "]{1}?"))) {
unicColl.add(N);
}
}
}
public static void main(String[] args) {
long[] l = getNumbers(5000000);
for (int i = 0; i < l.length; i++) {
System.out.println(l[i]);
}
}
}
/*
270 = 351
Попробовать через мэп(unic, unic в степени)
проверяем N на unic по ключу, далее проверяем N и значение(по unic)
*/