思路: 1.由于题目未给定数字的长度,因此需要字符串模拟来表示大整数,用C/C++基本类型是表示不出来的,我试过long long过了大概50个样例,就溢出了。 2.模拟大数相加,在本题中,就是一个大数加1。 AC代码(C++):
class Solution {
public:
vector<int> plusOne(vector<int> &digits){
string s,t="1";
for(int i=0; i<digits.size(); ++i){
s += to_string(digits[i]);
}
reverse(s.begin(), s.end());
for(int i=0; i<s.length()-1; ++i){
t += "0";
}
//大数相加
int c = 0;
string r;
for(int i=0; i<s.length() || i<t.length(); ++i){
int temp = s[i]-'0' + t[i] - '0' + c;
r += to_string(temp % 10);
c = temp / 10;
}
if(c!=0)
r += to_string(c);
vector<int> res;
for(int i=r.length()-1; i>=0; --i){
res.push_back(r[i]-'0');
}
return res;
}
};