LeetCode415 字符串相加 拓展:任意两个数字字符串相加

这篇博客主要讨论LeetCode415题目的解决方案,即两个非负整数字符串相加,并进一步扩展到任意两个非负字符串数字相加的问题。针对整数相加,博主提供了简单的思路和Java实现。在拓展部分,博主分析了三种情况:两整数、一整数一非整数和两非整数相加,并详细解释了每种情况的处理方法,包括整数部分和小数部分的处理以及边界条件的判断。
摘要由CSDN通过智能技术生成

前言:

LeetCode中的字符串相加是一道简单题,因为题目只涉及两个整数相加,思路相对简单;最近笔试遇到一道题,是将任意两个非负字符串数字相加,可能是整数也可能是带小数的,而且最后输出要完全符合数字的要求,即数字的整数部分不能以0开头(除非本身等于0),小数部分不能以0结尾。也就是123.321不能是0123.3210这种形式。

下面我们先看看一种简单的情况,也就是两整数相加的情况,如何计算。

LeetCode415 字符串相加

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

注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形

思路:

这道题的思路比较简单:按照正常两个数字相加的思路,就是从个位开始相加,各个位置对应相加,同时记录是否有进位,如果有进位的话,则在下个位置相加的时候也要加上进位的1。

Java代码:

这道题比较麻烦的地方就是边界的判断:

public static String IntStringAdd(String s1,String s2) {
		//carry是进位
        int carry = 0;
        //cur是当前位相加后的结果
        int cur = 0;
        char[] chars1 = s1.toCharArray();
        char[] chars2 = s2.toCharArray();
        int p1 = chars1.length - 1,p2 = chars2.length - 1;
        StringBuilder sb = new StringBuilder();
        while (p1 >= 0 && p2 >= 0) {
            char c1 = chars1[p1];
            char c2 = chars2[p2];
            cur = c1 - '0' + c2 - '0' + carry;
            //判断是否需要进位
            if(cur > 9) {
                cur -= 10;
                carry = 1;
            }else {
                carry = 0;
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值