题目:Given a non-negative number represented as an array of digits, plus one to the number.
string1=“1213”,加1之后string=“1214”.
思路:
转化+细节实现。
并不需要将字符串转化为数字本身,再将数字本身转化为字符串,这样会造成时间不够。
本题目的一个解法就是从最高位开始,设立一个flag标志,如果需要加1,flag=1.最后如果flag=1,再在字符串前面插入1.
代码:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
vector<int> result;
int flag=0;
if(digits[digits.size()-1]+1+flag>=10){
result.push_back((digits[digits.size()-1]+1+flag)%10);flag=1;
}else{
result.push_back(digits[digits.size()-1]+1+flag);
flag=0;
}
for(int i=digits.size()-2;i>=0;i--){
if(digits[i]+flag>=10){
result.push_back((digits[i]+flag)%10);flag=1;
}else{
result.push_back(digits[i]+flag);
flag=0;
}
}
if(flag){
result.push_back(flag);
}
reverse(result.begin(),result.end());
return result;
}
};