题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
方法1:将字符串转化为数
Python
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
sumA,sumB=0,0
for i in range(len(num1)-1,-1,-1):
sumA+=int(num1[i])*10**(len(num1)-1-i)
for j in range(len(num2)-1,-1,-1):
sumB += int(num2[j]) * 10 ** (len(num2) - 1 - j)
return(str(sumA+sumB))
方法2:模拟
Java实现1
class Solution {
public String addStrings(String num1, String num2) {
int max_len = Math.max(num1.length(), num2.length());
int min_len = Math.min(num1.length(), num2.length());
// 短的补0
if (num1.length() > num2.length()) {
for (int i = max_len; i > min_len; i--) {
num2 = "0" + num2;
}
} else if (num1.length() < num2.length()) {
for (int i = max_len; i > min_len; i--) {
num1 = "0" + num1;
}
}
// 加法运算
int flag = 0;
String res = "";
for (int i = max_len - 1; i >= 0; i--) {
int dig1 = num1.charAt(i) - '0';
int dig2 = num2.charAt(i) - '0';
if (dig1 + dig2 + flag >= 10) {
res = String.valueOf(dig1 + dig2 + flag - 10) + res;
flag = 1;
} else {
res = String.valueOf(dig1 + dig2 + flag) + res;
flag = 0;
}
}
// 判断是否进位
if (flag == 1) {
res = "1" + res;
}
return res;
}
}
Java实现2
class Solution {
public String addStrings(String num1, String num2) {
int var = 0; //进位
int i = num1.length() - 1, j = num2.length() - 1;
StringBuffer res = new StringBuffer();
while (i >= 0 || j >= 0 || var != 0){
int a = i >= 0 ? num1.charAt(i) - '0' : 0;
int b = j >= 0 ? num2.charAt(j) - '0' : 0;
int sum = a + b + var;
var = sum / 10;
res.append(sum % 10);
i--;
j--;
}
res.reverse();
return res.toString();
}
}