415. Add Strings

来源:互联网 发布:gta5最好用的漂移数据 编辑:程序博客网 时间:2024/06/07 13:07

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.
一开始的思路是stringToint  intTostring 

结果发现存在大数相加的情况,于是只能使用讨论区各位大佬的想法,两个字符串bit相加。

下面是刚开始的代码:

class Solution {public:    string addStrings(string num1, string num2) {        int a=StringToInt(num1);        int b=StringToInt(num2);        int sum=a+b;        string ret=IntToString(sum);        return ret;            }private:    int StringToInt(const string& s)    {        int i=s.size(),ret=0,temp,tens=1;        while(i>0)        {            temp=s[i-1]-'0';            ret=ret+temp*tens;            tens=tens*10;            i--;        }        return ret;    }    string IntToString(int num)    {        if(num==0) return "0";        string ret;        while(num)        {            char c='0'+ num%10;            ret=c+ret;            num=num/10;        }        return ret;    }};
大佬们的代码:

class Solution {public: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;}};


自己的代码在编译过程中存在好多问题:

while循环判断条件的逻辑不够明确,导致开始存在很多问题。



原创粉丝点击