• 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;
        }
    };
    
  • 相关阅读:
    复利软件单利及期望值的实现
    实验0 了解和熟悉操作系统
    关于《软件工程》的读后感
    评论
    一个完整的大作业
    数据结构化与保存
    爬取所有校园新闻
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
  • 原文地址:https://www.cnblogs.com/linrj/p/13425312.html
Copyright © 2020-2023  润新知