LeetCode – 字符串数字相乘与相加
43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
说明:
num1
和num2
的长度小于110。num1
和num2
只包含数字0-9
。num1
和num2
均不以零开头,除非是数字 0 本身。- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
JAVA
public static String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")){ return "0"; } int len1 = num1.length(); int len2 = num2.length(); int [] sums = new int[len1 + len2]; for (int i = len1 - 1; i >= 0; i--) { int n1 = num1.charAt(i) - 48; for (int j = len2 - 1; j >= 0; j--) { int n2 = num2.charAt(j) - 48; sums[i + j] += n1 * n2; if (sums[i + j] > 9 && (i + j) != 0){ sums[i + j - 1] += sums[i + j] / 10; sums[i + j] = sums[i + j] % 10; } } } StringBuilder builder = new StringBuilder(); for (int i = 0; i < len1 + len2 - 1; i++){ builder.append(sums[i]); } return builder.toString(); }
415. 字符串相加
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.num1
和num2
都只包含数字0-9
.num1
和num2
都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
JAVA
public static String strSum(String num1, String num2){ int i = num1.length() - 1; int j = num2.length() - 1; StringBuilder builder = new StringBuilder(); int carry = 0; while (i >= 0 || j >= 0) { if (i >= 0) { carry += num1.charAt(i) - '0'; } if (j >= 0) { carry += num2.charAt(j) - '0'; } builder.append((char)(carry % 10 + '0')); carry /= 10; i--; j--; } if (carry == 1) { builder.append('1'); } return builder.reverse().toString(); }
原文地址:https://www.cnblogs.com/asche/p/11493482.html
相关推荐
-
Linux-Nginx负载均衡 Java基础
2019-8-26
-
Java8 HashMap源码分析 Java基础
2020-5-30
-
CAS、原子操作类的应用与浅析及Java8对其的优化 Java基础
2019-3-10
-
Java泛型的重要目的:别让猫别站在狗队里 Java基础
2019-5-8
-
使用Log4j日志处理 Java基础
2019-2-2
-
Spring全家桶–SpringBoot Rest API Java基础
2019-5-8
-
5个步骤,教你瞬间明白线程和线程安全 Java基础
2019-1-9
-
jenkins配置findbugs失败—不要随便忽略警告!一个因为文件所有权引发的血案 Java基础
2019-6-26
-
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!! Java基础
2020-6-14
-
(PHP+HTML+JavaScript+Css)一个简单爬虫的开发 Java基础
2020-7-3