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;
}
};