Plus One

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


原文地址:https://www.cnblogs.com/jsrgfjz/p/8519914.html