zoukankan      html  css  js  c++  java
  • [leetcode-415-Add Strings]

    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

    Note:

    1. The length of both num1 and num2 is < 5100.
    2. Both num1 and num2 contains only digits 0-9.
    3. Both num1 and num2 does not contain any leading zero.
    4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

    思路:

    模拟手工加法过程,用carry表示进位。

    第一个是自己写的,比较啰嗦。

    第二个是参考的网上大神的,简洁。

    string addStrings(string num1, string num2)
         {
             int n1 = num1.length()-1, n2 = num2.length()-1;
             string ret="";
             int digit = 0;
             int carry = 0;
             int sum = 0;
             while (n1 >= 0 && n2 >= 0)
             {
                 sum = carry + num1[n1--] + num2[n2--] - '0' - '0';
                 digit = sum %10;
                 carry = (sum >= 10) ? 1 : 0;
                 ret += (digit+'0');
             }
            
             while (n1 >= 0)
             {
                 sum = carry + num1[n1--] - '0';
                 digit = sum % 10;
                 carry = (sum >= 10) ? 1 : 0;
                 ret += (digit + '0');
             }        
             
             while (n2 >= 0)
             {
                 sum = carry + num2[n2--] - '0';
                 digit = sum % 10;
                 carry = (sum >= 10) ? 1 : 0;
                 ret += (digit + '0');
             }        
             
            if (carry) ret += '1';
             reverse(ret.begin(), ret.end());
             return ret;         
         }

    string addStrings(string num1, string num2) {
        int i = num1.size() - 1;
        int j = num2.size() - 1;
        int carry = 0;
        string res = "";
        while(i>=0 || j>=0 || carry){
            long sum = 0;
            if(i >= 0){sum += (num1[i] - '0');i--;}
            if(j >= 0){sum += (num2[j] - '0');j--;}
            sum += carry; 
            carry = sum / 10;
            sum = sum % 10;
            res =  res + to_string(sum);
        }
        reverse(res.begin(), res.end());
        return res;
    }

    参考:

    https://discuss.leetcode.com/topic/62305/c-_accepted_13ms

  • 相关阅读:
    SQL序列键
    SQL日期跟时间值序列
    springboot日志配置
    weblogic10补丁升级与卸载
    idea使用svn报错
    mybatis插入数据并返回主键(oracle)
    UTF-8格式txt文件读取字节前三位问题
    https连接器
    git将本地项目上传码云
    aop的使用
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7123938.html
Copyright © 2011-2022 走看看