Я получил этот вопрос во время интервью, вопрос
Для двух целых чисел возвращайте количество цифр, которые они разделяют.
Например, 129 и 431 будут возвращать 1 - поскольку они оба разделяют цифру 1
, но никакой другой цифры. 95 и 780 будут возвращать 0, так как ни одно из целых чисел не перекрывается.
Мои мысли просто перебирают цифры, хранят их в хэш-таблице и проверяют .containsKey.
Мое решение для Java:
public int commonDigits(int x, int y) {
int count = 0;
HashTable<Integer, String> ht = new HashTable<Integer, String>();
while (x != 0) {
ht.put(x % 10, "x");
x /= 10;
}
while (y != 0) {
if ((ht.containsKey(y % 10)) {
count++;
}
y /= 10;
}
return count;
}
Но это занимает O (n) пространство и O (n + m) время, в любом случае я могу улучшить это?