zoukankan      html  css  js  c++  java
  • LeetCode415. 字符串相加

    几千位的字符串,肯定不能转成数字再加了(也转不了),不过还好只要做加法,可以对每一位进行加法,注意进位即可。

    可以把两个字符串右对齐,然后对每一位进行加法,每一位计算出来的数字加到一个结果字符串里,这样计算完成后(遍历完num1和num2以及进位为0了),
    就把字符串反转一遍,就得到了两个字符串相加的结果。

    class Solution {
    public:
        string addStrings(string num1, string num2) {
            string res = "";
            int i = num1.size() - 1, j = num2.size() - 1;            //右对齐,从低位往高位做加法
            int t = 0;                                                //t表示进位
            while(i >= 0 || j >= 0 || t != 0) {                        
                int number1 = i >= 0 ? num1[i] - '0' : 0;              //num1当前的数字,如果已经超过了num1的长度,就用0代替,num2同理
                int number2 = j >= 0 ? num2[j] - '0' : 0;
                int curSum = number1 + number2 + t;                  //当前位置,两个数相加的和
                t = curSum / 10;                                    //因为和可能超过了10,所以需要计算进位
                res += ('0' + curSum % 10);                          //当前位的数字是两个数的和对10取余
                --i, --j;                                            //继续往高位计算
            }
            reverse(res.begin(), res.end());                         //因为是从字符串右边开始计算的,得到的字符串需要翻转之后才是我们要的结果
            return res;
        }
    };
    
  • 相关阅读:
    JS实例
    第一章 机器学习基础
    事件与信号
    微信公众号开发实例
    php学记笔记之函数用途
    php漏洞修复 禁用函数
    删除MYSQL账号多于的空用户
    MySql 建表、添加字段、修改字段、添加索引SQL语句写法
    php对二维数据进行排序
    iis支持IPA和APK文件下载
  • 原文地址:https://www.cnblogs.com/linrj/p/13425312.html
Copyright © 2011-2022 走看看