zoukankan      html  css  js  c++  java
  • LeetCode:字符串相加【415】

    LeetCode:字符串相加【415】

    题目描述

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

    注意:

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

    题目分析

      这道题其实很简单,我们要搞清楚手工计算两数之和的流程。两数相加,和如果大于10的话就有进位,进位最高为1,默认为0,该位相加的和应为sum%10

      小学数学题哦,不多解释了!

    Java题解

        public static String addStrings(String num1, String num2) {
            int ptrNum1 = num1.length()-1 ;
            int ptrNum2 = num2.length()-1 ;
            int count = 0;
            StringBuilder result = new StringBuilder();
            //1、从两数个位开始相加
            while(ptrNum1>=0&&ptrNum2>=0){
                //[a、换算成数字]
                int a = num1.charAt(ptrNum1)-'0';
                int b = num2.charAt(ptrNum2)-'0';
                //[b、计算位数之和,包含进位count]
                int sum = a+b+count;
                count = 0;
                //[c、如果和大于9,则有新进位]
                if(sum>9){
                    count =1;
                    sum-=10;
                }
                //[d、将处理后sum插入结果]
                result.insert(0,sum);
                ptrNum1--;
                ptrNum2--;
            }
            //2、假如数字1还有高位未相加
            while(ptrNum1>=0){
                //[a、仅仅与进位值相加]
                int a =num1.charAt(ptrNum1)-'0'+count;
                count = 0;
                if(a>=10){
                    count =1;
                    a-=10;
                }
                //[b、将处理后sum插入结果]
                result.insert(0,a);
                ptrNum1--;
            }
            //3、加入数字2还有高位未相加
            while(ptrNum2>=0){
                int a =num2.charAt(ptrNum2)-'0'+count;
                count = 0;
                if(a>10){
                    count =1;
                    a-=10;
                }
                result.insert(0,a);
                ptrNum2--;
            }
            //4、考虑最高位进位的情况
            if(count==1)
                result.append("1");
            return result.toString();
        }
    

      

     

  • 相关阅读:
    mysql忘记root密码解决办法
    laravel 获取所有表名
    跳转/传值(从页面到php文件)
    smarty foreach
    radio单选框
    dedecms实例化对象
    file_get_contents()
    if($a)
    bug解决思路
    git查看远程仓库地址
  • 原文地址:https://www.cnblogs.com/MrSaver/p/11609516.html
Copyright © 2011-2022 走看看