标签:指针 rev sci 两数相加 return 题目 数加 public 计算
/**
*
* 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
*
*/
public String addStrings(String num1, String num2) {
//数据校验
if ("0".equals(num1) || num1 == null || num1.length() == 0) {
return num2;
}
if ("0".equals(num2) || num2 == null || num2.length() == 0) {
return num1;
}
//定义StringBuffer保存两字符串相加后的值
StringBuffer buffer = new StringBuffer();
//定义carry保存两数相加后是否有进位
int carry = 0;
//定义i j 指针指向两字符串的最右侧索引
int i = num1.length() - 1, j = num2.length() - 1;
//将两数从个数开始依次相加,考虑进位,如果两数长度不相等,则高位补0
while (i >= 0 || j >= 0 || carry != 0) {
//考虑两数长度不相同的情况,定义 x y保存对应位上的数字大小
int x = i >= 0 ? num1.charAt(i) - ‘0‘ : 0;
int y = j >= 0 ? num2.charAt(j) - ‘0‘ : 0;
int res = x + y + carry;
buffer.append(res % 10);
carry = res / 10;
i--;
j--;
}
return buffer.reverse().toString();
}
标签:指针 rev sci 两数相加 return 题目 数加 public 计算
原文地址:https://www.cnblogs.com/mx-info/p/14816741.html