- #刷题
- #leetcode
43. Multiply Strings P1的进位问题

3742
这道题有个疑惑点,先贴看到的答案吧
public String multiply(String num1, String num2) {
if(num1 == null || nums2 == null) return '0';
int[] digits = new int[num1.length + num2.length];
for(int i = num1.length - 1; i >= 0; i--) {
for(int j = num2.length - 1; j >=0; j--) {
int product = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j;
int p2 = i + j + 1;
int sum = digits[p2] + product;
digits[p1] += sum/10;
digits[p2] = sum%10;
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < digits.length; i++) {
if(!(digits == 0 && sb.length == 0)) {
sb.append(digits);
}
}
return sb.length == 0 ? '0' : sb.toString();
}
有个情况就是如果digits[p1] 之前刚好等于9, 然后万一sum/10等于个1, 9 + 1不就等于10了嘛, 这样digits[p1]就等于10了,这难道不需要进个位嘛?
public String multiply(String num1, String num2) {
if(num1 == null || nums2 == null) return '0';
int[] digits = new int[num1.length + num2.length];
for(int i = num1.length - 1; i >= 0; i--) {
for(int j = num2.length - 1; j >=0; j--) {
int product = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j;
int p2 = i + j + 1;
int sum = digits[p2] + product;
digits[p1] += sum/10;
digits[p2] = sum%10;
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < digits.length; i++) {
if(!(digits == 0 && sb.length == 0)) {
sb.append(digits);
}
}
return sb.length == 0 ? '0' : sb.toString();
}
有个情况就是如果digits[p1] 之前刚好等于9, 然后万一sum/10等于个1, 9 + 1不就等于10了嘛, 这样digits[p1]就等于10了,这难道不需要进个位嘛?
2条回复
热度排序