一点小失误,少数次过
1 class Solution { 2 public: 3 string multiply(string num1, string num2) { 4 vector<int> mul(num1.size() + num2.size()); 5 for (int i = 0; i < num1.size(); i++) { 6 for (int j = 0; j < num2.size(); j++) { 7 mul[num1.size()-1-i+num2.size()-1-j] += (num1[i] - '0') * (num2[j] - '0'); 8 } 9 } 10 int carry = 0; 11 for (int i = 0; i < mul.size(); i++) { 12 mul[i] += carry; 13 carry = mul[i] / 10; 14 mul[i] %= 10; 15 } 16 string ans; 17 for (int i = mul.size()-1; i >= 0; i--) { 18 if (mul[i] == 0) { 19 if (ans.size() > 0) ans += ('0' + mul[i]); 20 } 21 else ans += ('0' + mul[i]); 22 } 23 return ans.size() == 0? "0" : ans; 24 } 25 };
C#
1 public class Solution { 2 public string Multiply(string num1, string num2) { 3 int[] mul = new int[num1.Length + num2.Length]; 4 for (int i = 0; i < num1.Length; i++) { 5 for (int j = 0; j < num2.Length; j++) { 6 mul[num1.Length-1-i+num2.Length-1-j] += (num1[i] - '0') * (num2[j] - '0'); 7 } 8 } 9 int c = 0; 10 for (int i = 0; i < mul.Length; i++) { 11 mul[i] += c; 12 c = mul[i] / 10; 13 mul[i] %= 10; 14 } 15 string ans = ""; 16 for (int i = mul.Length-1; i >= 0; i--) { 17 if (mul[i] == 0) { 18 if (ans.Length > 0) ans += mul[i]; 19 } 20 else ans += mul[i]; 21 } 22 return ans.Length == 0? "0" : ans; 23 } 24 }