LeetCode43 字串相乘

2021-09-12 13:13:31 字數 1201 閱讀 9057

給定兩個以字串形式表示的非負整數 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...