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存储过程笔记
    mysql 命令行操作
    第一天前来报到
    Android Studio导入工程版本问题、gradle版本问题
    LogUtils-定制自己的日志工具
    Git2.11安装下载和github使用
    Android Studio 2.3版本 以及相应的gradle3.3包
    android 导入第三方jar包和类库
    GifView——Android显示GIF动画
    Android中dip、dp、sp、pt和px的区别详解
  • 原文地址:https://www.cnblogs.com/MrSaver/p/11609516.html
Copyright © 2011-2022 走看看