Эффективный способ проверить цифры в номереJAVA

Программисты JAVA общаются здесь
Anonymous
Эффективный способ проверить цифры в номере

Сообщение Anonymous »

Это вопрос интервью. Учитывая 3 списка массива, удерживающие негативные целые числа, выберите число из каждого списка и найдите сумму, проверьте, содержит ли сумма только цифры 5 и 8 < /p>
Вот мой код: < /p>
Пример: < /p>

Код: Выделить всё

List A = [2]
List B = [13]
Lict C = [70, 43]
< /code>
result = 2 < /p>
Объяснение, допустимые комбинации составляют 2+13+70 = 85, 2+13+43 = 58, оба имеют 5 и 8, как только Didigits в их сумме.import java.util.*;
class Main {
public static void main(String[] args) {
System.out.println(solve(Arrays.asList(2),
Arrays.asList(13),
Arrays.asList(70))); // 1
System.out.println(solve(Arrays.asList(2),
Arrays.asList(13),
Arrays.asList(70, 43))); // 2
}

public static int solve(List A, List B, List C) {

int count = 0;
for(long a : A) {
for(long b : B) {
for(long c : C) {
long sum = a+b+c;
if(valid(sum)) count++;
}
}
}
return count;
}
static boolean valid(long sum) {
if(sum ==0) return false;
while(sum > 0) {
long e = sum % 10;
if(e != 5 && e != 8) return false;
sum /= 10;
}
return true;
}
}
Существуют некоторые скрытые тестовые примеры, которые терпят неудачу, я подозреваю, что проблема - это сложность времени моего кода, каково эффективно (меньше сложности времени) для решения этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/797 ... n-a-number

Вернуться в «JAVA»