Jurijus Zaksas
Искусственный Интеллект
(420374)
4 года назад
С помощью ЭТОЙ функции этого делать не нужно. Нужно примерно следующее:
public static HashSet< int> GetDigits(int a)
{
HashSet< int> Result = new HashSet< int>();
while (a>0)
{
int k = a % 10;
a /= 10;
if (!Result.Contains(k))
Result.Add(k);
}
return Result;
}
public bool HaveSameDigits(int a, int b)
{
HashSet< int> DigitsA = GetDigits(a);
HashSet< int> DigitsB = GetDigits(b);
return DigitsA.Overlaps(DigitsB) && DigitsB.Overlaps(DigitsA);
}
Юрий Семыкин
Искусственный Интеллект
(185388)
4 года назад
В исходной функции ошибка: число "0" полностью содержит все цифры второго числа "0", а функция выдаст "false".
От вас требуется написать функцию с циклом, в котором получить очередную цифру второго числа, проверить функцией, если false, то return - попалась цифра, которой нет в первом числе. После цикла выход (return) - все цифры есть.
Только это задание по истории программирования.
Нормально решить: получить первое и второе число как строку и использовать методы строк (поиска, взождения и т д), а класснее использовать RegEx - регулярные выражения. Всё решение займёт не более 10 строк и вероятность ошибиться будет меньше.
public static boolean digit(int num, int dig) {
int dig1 = 0;
while (num != 0)
{
dig1 = num % 10;
if (dig1 == dig)
return true;
else
num /= 10;
}
return false;