问题描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
解答
class Solution { public void jinwei(StringBuilder s1, int offset, int num){ if(offset < s1.length()){ int temp = (int)s1.charAt(offset)-'0'+num; if(temp>=10){ s1.setCharAt(offset,(char)(temp%10+48)); jinwei(s1, offset+1, (int)(temp/10)); } else s1.setCharAt(offset, (char)(temp+48)); }else s1.append(num); } public String addStrings(String num1, String num2) { int len_num1 = num1.length(); int len_num2 = num2.length(); //保证num1比num2长 if(len_num1 < len_num2){ String result = addStrings(num2, num1); return result; } StringBuilder s1 = new StringBuilder(num1); StringBuilder s2 = new StringBuilder(num2); s1.reverse(); s2.reverse(); //结果保存到长的String里面,也就是num1 for(int i=0;i<len_num2;i++){ int temp = (int)s1.charAt(i)-'0'+(int)s2.charAt(i)-'0'; if(temp>=10){ s1.setCharAt(i,(char)(temp%10+48)); jinwei(s1, i+1, (int)(temp/10)); } else s1.setCharAt(i,(char)(temp+48)); } return s1.reverse().toString(); } }