1. 程式人生 > >LintCode 655. 大整數加法

LintCode 655. 大整數加法

return rtl 字符 n-n pos clas max 位與 -s

以字符串的形式給出兩個非負整數 num1num2,返回 num1num2 的和。

樣例

給定 num1 = "123",num2 = "45"
返回 "168"

class Solution {
public:
    /*
     * @param num1: a non-negative integers
     * @param num2: a non-negative integers
     * @return: return sum of num1 and num2
     */
    string addStrings(string &num1, string
&num2) { // write your code here int longLen=max(num1.size(),num2.size()); int shortLen=min(num1.size(),num2.size()); string n1=num1.size()==longLen?num1:num2;//長度較長的串 string n2=num2.size()==shortLen?num2:num1;//長度較短的串 int diffLen=longLen-shortLen;
int x=0;//進位 for(int i=shortLen-1;i>=0;i--)//從兩個串的末尾開始運算,運算shortLen位 { n1[i+diffLen]=n1[i+diffLen]+n2[i]+x-0-0; x=n1[i+diffLen]/10;//保存進位 n1[i+diffLen]=n1[i+diffLen]%10+0; } //剩余的部分與進位處理 //如189+2,先處理9+2 然後在以下運算處理進位與前面18的加法運算 for
(int j=longLen-shortLen-1;j>=0;j--) { if(x==0) break; n1[j]=n1[j]+x-0; x=n1[j]/10;//保存進位 n1[j]=n1[j]%10+0; } if(x>0) return 1+n1; else return n1; } };

LintCode 655. 大整數加法