Java сверка числа с фрагментом

113
20 мая 2021, 16:30

имеется массив чисел

String[] NUMBER =new String[5]
943434
232343
232432
232443
943243

Есть фрагменты

String[] MASK =new String[3];
94
232
2324

Как сделать, чтобы каждое число можно было бы сопоставить фрагменту, причём если число соответствует двум фрагментам, то оно принадлежит фрагменту с бильшим числом цифр (напраимер 232432 соответствует фрагментам 232 и 2324, но присвоить нужно второму, т.к. он больше)

Answer 1
String[] NUMBER = new String[] {"943434", "232343", "232432", "232443", "943243"};
String[] MASK = new String[] {"94", "232", "2324"};
HashMap<String,String> map = new HashMap<>();
for (String s : NUMBER)
    for (String mask : MASK)
        if (s.contains(mask)) {
            String n = map.get(s);
            if(n == null || mask.length() > n.length())
                map.put(s, mask);
        }
System.out.println(map);

Вывод:

{943243=94, 943434=94, 232343=232, 232432=2324, 232443=2324}
READ ALSO