前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串相加Add Strings(给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。)

字符串相加Add Strings(给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。)

原创
作者头像
艳艳代码杂货店
修改2021-09-19 20:58:40
5830
修改2021-09-19 20:58:40
举报

/**

* @author LemonLin

* @Description :StringAddStrings

* @date 19.6.13-22:47

* Given two non-negative integers num1 and num2 represented as string, return the sum of num1

* and num2.

* Note:

* The length of both num1 and num2 is < 5100.

* Both num1 and num2 contains only digits 0-9.

* Both num1 and num2 does not contain any leading zero.

* You must not use any built-in BigInteger library or convert the inputs to integer directly.

*给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

* 注意:

* num1 和num2 的长度都小于 5100.

* num1 和num2 都只包含数字 0-9.

* num1 和num2 都不包含任何前导零。

* 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

* 思路:题目要求不能直接用Integer的库,那么考虑用取出字符串中的每个字符-'0'来转换为整数差来计算,

* 从后往前遍历字符串,要考虑进位的问题。

* 难点:获得每个索引位置的数值之后怎么拼接起来,比如从后往前获得的数值是2,3,5,1.怎么把这四个数字拼成

* 1532

*解答:这里直接用stringbuilder的append方法,最后再reverse反转一下,感觉不是很优雅,暂时没想到其他

* 办法

*/

public class StringAddStrings {

public String addStrings(String num1, String num2) {

int index1=num1.length()-1,index2=num2.length()-1;

int carry=0;

StringBuilder stringBuilder = new StringBuilder();

int temp1=0,temp2=0;

int sum=0;

while (index1>=0||index2>=0){

//减字符'0'是为了将字符转换为对应的整数

if (index1 < 0){

temp1 =0;

}else {

temp1 = num1.charAt(index1--)-'0';

}

if (index2 < 0){

temp2 =0;

}else {

temp2 = num2.charAt(index2--)-'0';

}

sum=carry+temp1+temp2;

stringBuilder.append(sum%10);

carry = sum/10;

}

if (carry ==1){

stringBuilder.append("1");

}

return stringBuilder.reverse().toString();

}

public static void main(String[] args) {

String num1="122";

String num2="23";

System.out.println(new StringAddStrings().addStrings(num1, num2));

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档