题目: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; } };