Leetcode——415. Add Strings【java】

本文探讨了如何处理两个大整数的相加问题,避免使用内置的大整数库或直接转换为整型,通过字符串操作实现高效算法。介绍了算法的具体实现过程,包括位运算、进位处理及结果字符串构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大概是那个面试题吧,就是也许两个数相加,陷阱就是可能那个数就贼大,也许远远超过int或者long

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

Note:

  1. The length of both num1 and num2 is < 5100.
  2. Both num1 and num2 contains only digits 0-9.
  3. Both num1 and num2 does not contain any leading zero.
  4. You must not use any built-in BigInteger library or convert the inputs to integer directly
自己的想法有几个疏漏:
if (num1.length() >= num2.length()) { bigStr = num1; smallStr = num2; } else { bigStr = num2; smallStr = num1; }
这样比较好些。。



大神简洁实用做法:

public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length() - 1, carry = 0; String res = ""; while (i >= 0 || j >= 0) { if (i >= 0) carry += num1.charAt(i--) - '0'; if (j >= 0) carry += num2.charAt(j--) - '0';//既然是相加,那么用结果一个再加另一个也是完全可以的吧 res = Integer.toString(carry % 10) + res; carry /= 10; } return carry != 0 ? "1" + res : res;//直接用字符串的相加特性,非常巧妙 }

 //0316复习 

转载于:https://www.cnblogs.com/Cherrylalala/p/6552750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值