大数相加,注意string类型的相加顺序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35747066/article/details/89424523

989. Add to Array-Form of Integer

Easy

9115FavoriteShare

For a non-negative integer X, the array-form of X is an array of its digits in left to right order.  For example, if X = 1231, then the array form is [1,2,3,1].

Given the array-form A of a non-negative integer X, return the array-form of the integer X+K.

Example 1:

Input: A = [1,2,0,0], K = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234

Example 2:

Input: A = [2,7,4], K = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455

Example 3:

Input: A = [2,1,5], K = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021

Example 4:

Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1
Output: [1,0,0,0,0,0,0,0,0,0,0]
Explanation: 9999999999 + 1 = 10000000000
class Solution {
public:
    string IntToString(int K){
        string Result = "";
        while(K){
            Result = to_string(K % 10) + Result;
            K = K / 10;
        }
        return Result;
    }
    string VecToString(const vector<int>& A){
        string Result = "";
        for(int i = 0;i < A.size();i++){
            Result += (A[i] + '0');
        }
        return Result;
    }
    vector<int> StringToVec(const string& Input){
        vector<int> Result;
        for(int i = 0;i < Input.size();i ++){
            Result.push_back(Input[i] - '0');
        }
        return Result;
    }
    vector<int> addToArrayForm(vector<int>& A, int K) {
            string Result = "";
            string Left = IntToString(K);
            string Right = VecToString(A);
            int LeftLen = Left.length();
            int RightLen = Right.length();
            int len = max(LeftLen,RightLen);
            while(LeftLen < len){
                Left = "0" + Left;
                LeftLen ++;
            }
            while(RightLen < len){
                Right = "0" + Right;
                RightLen ++;
            }
            int JinWei = 0;
            for(int i = len - 1;i >= 0;i --){
                char tmp = Left[i] + Right[i] -'0' + JinWei;
                if(tmp > '9'){
                    tmp = tmp - 10;
                    Result = tmp + Result;
                    JinWei = 1;
                }
                else{
                    Result = tmp + Result;
                    JinWei = 0;
                }
            }
            if(JinWei == 1){
                Result = "1" + Result;
            }
            vector<int> Res = StringToVec(Result);
            return Res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_35747066/article/details/89424523