版权声明:本文为博主原创文章,未经博主允许不得转载。 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:
扫描二维码关注公众号,回复:
5964278 查看本文章
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;
}
};