給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。
示例 1:
輸入: num1 = "2", num2 = "3"
輸出: "6"
示例 2:
輸入: num1 = "123", num2 = "456"
輸出: "56088"
說明:
兩個很大很大的數字相乘,假設num1和num2都是100位的數,那麼其本身就無法使用整型資料儲存,因此每一步乘法的結果都要使用字串儲存。
將長度更短的字串作為乘數,更長的作為被乘數,逐位相乘相加
(1)設定乙個字串s1,專門用來存放每一步乘法得到的積
(2)再設定乙個字串s2,用來存放前一步的結果
(3)字串s3=s1+s2
(4)s2=s3
如此迭代,直到最後一位數
c++**:
class solution
else
k3 = 0;
s0.push_back(m + '0');
}if (k3 != 0)
s0.push_back(k3 + '0');
res2 = add_str(s0, res1);
res1 = res2;
s0.clear();
} return reverse(res2);
} // 這裡的s1和s2的最低位是0
string add_str(string s1, string s2)
else if (i < s1.size())
else
if (sum >= 10)
else
k3 = 0;
s.push_back((sum + '0'));
i++;
} if (k3 != 0)
s.push_back((k3 + '0'));
return s;
} string reverse(string s)
return s1;
}};
執行效率:
LeetCode43 字串相乘
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 題目分析 如果兩個字串中有乙個為0,則結果是0 否則的話,將其中乙...
LeetCode43字串相乘
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1和num2的長度小於110。num1和num2只包含...
leetcode43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...