[LeetCode] Add Strings 字符串相加
也是从高位开始的,
Given two non-negative numbers num1
and num2
represented as string, return the sum of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 5100. - Both
num1
andnum2
contains only digits0-9
. - Both
num1
andnum2
does not contain any leading zero. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
这道题让我们求两个字符串的相加,之前LeetCode出过几道类似的题目,比如二进制数相加,还有链表相加,或是字符串加1,基本思路很类似,都是一位一位相加,然后算和算进位,最后根据进位情况看需不需要补一个高位,难度不大,参见代码如下:
class Solution {
public String addStrings(String num1, String num2) {
int m = num1.length()-1, n = num2.length()-1, c = 0;
StringBuilder sb = new StringBuilder();
while(c == 1 || m >=0 || n >= 0){
//这里注意 用到了 字符间a's'cII码的差值 得到对应的整数值
int x = m < 0 ? 0 : num1.charAt(m--) - '0';
int y = n < 0 ? 0 : num2.charAt(n--) - '0';
sb.append((x + y + c) % 10);
c = (x + y + c) / 10;
}
return sb.reverse().toString();
}
}