对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
示例 1:
输入:A = [1,2,0,0], K = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
解释 2:
输入:A = [2,7,4], K = 181
输出:[4,5,5]
解释:274 + 181 = 455
示例 3:
输入:A = [2,1,5], K = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021
示例 4:
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1
输出:[1,0,0,0,0,0,0,0,0,0,0]
解释:9999999999 + 1 = 10000000000
提示:
1 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
如果 A.length > 1,那么 A[0] != 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
// vector<int> addToArrayForm(vector<int>& A, int K)
// {
// vector<int> array;
// while(K)
// {
// //array.push_back(K%10);
// array.insert(array.begin(), K%10);
// K /= 10;
// }
// int size1 = A.size();
// int size2 = array.size();
// if(size2 < size1)
// {
// for(int i = 0; i < (size1-size2)+1; i++)
// array.insert(array.begin(), 0);
// A.insert(A.begin(), 0);
// }
// else if(size1 < size2)
// {
// for(int i = 0; i < (size2-size1)+1; i++)
// A.insert(A.begin(), 0);
// array.insert(array.begin(), 0);
// }
// else
// {
// A.insert(A.begin(), 0);
// array.insert(array.begin(), 0);
// }
// // for_each (A.begin(), A.end(), myfunction);
// // cout<<endl;
// // for_each (array.begin(), array.end(), myfunction);
// int size = max(size1, size2);
// int i = 0;
// int jinwei = 0;
// vector<int> ret;
// for(i = size; i >= 0; i--)
// {
// // int a = A[i];
// // int b = array[i];
// int sum = A[i] + array[i] + jinwei;
// if(sum >= 10)
// jinwei = 1;
// else
// jinwei = 0;
// sum %= 10;
// //ret = std::to_string(sum) + ret;
// ret.insert(ret.begin(), sum);
// }
// if(ret[0] == 0)
// ret.erase(ret.begin(),ret.begin()+1);
// return ret;
// }
vector<int> addToArrayForm(vector<int>& A, int K)
{
vector<int> res;
string num1;
for(int i = 0; i < A.size(); i++)
{
num1 = num1 + to_string(A[i]);
}
string num2 = to_string(K);
int size1 = num1.size();
int size2 = num2.size();
if(size2 < size1)
{
for(int i = 0; i < (size1-size2)+1; i++)
num2 = '0'+num2;
num1 = '0'+num1;
}
else if(size1 < size2)
{
for(int i = 0; i < (size2-size1)+1; i++)
num1 = '0'+num1;
num2 = '0'+num2;
}
else
{
num1 = '0'+num1;
num2 = '0'+num2;
}
cout<<num1<<endl;
cout<<num2<<endl;
int size = max(size1, size2);
int i = 0;
int jinwei = 0;
string ret;
for(i = size; i >= 0; i--)
{
//int a = num1[i]-'0';
//int b = num2[i]-'0';
int sum = num1[i]-'0' + num2[i]-'0' + jinwei;
if(sum >= 10)
jinwei = 1;
else
jinwei = 0;
sum %= 10;
ret = std::to_string(sum) + ret;
}
if(ret[0] == '0')
ret.erase(0,1);
for(int i = 0; i < ret.size(); i++)
{
res.push_back(ret[i] - 48);
}
return res;
}
};