Сложность: hard
Даны два неотрицательных числа
num1 и num2, представленные в виде строк. Нужно вернуть их произведение в виде строки. Ограничения:
- Нельзя использовать встроенные библиотеки
BigInteger. - Нельзя напрямую конвертировать входные данные в числа.
Пример:
Input: num1 = "2", num2 = "3"
Output: "6"
👨💻 Алгоритм:
1⃣Создайте массив длиной n + m, пройдите по цифрам в обратном порядке и перемножьте пару.
2⃣Сумму контроллера в неправильной позиции, обработку переноса при старшем разряде.
3⃣Собрать результат, пропустить вход нулевой и вернуть как символ.
😎 Решение:
public class Solution {
public string Multiply(string num1, string num2) {
if (num1 == "0" || num2 == "0") return "0";
int n = num1.Length, m = num2.Length;
int[] ans = new int[n + m];
for (int i = n - 1; i >= 0; i--) {
for (int j = m - 1; j >= 0; j--) {
int mul = (num1[i] - '0') * (num2[j] - '0');
int sum = mul + ans[i + j + 1];
ans[i + j + 1] = sum % 10;
ans[i + j] += sum / 10;
}
}
StringBuilder result = new StringBuilder();
foreach (int num in ans) {
if (!(result.Length == 0 && num == 0)) {
result.Append(num);
}
}
return result.ToString();
}
}Ставь 👍 и забирай 📚 Базу знаний