LeetCode-738. 单调递增的数字

### 解题思路
此处撰写解题思路
1.数字转为string,方便逐位比较,在取每一位的时候很好用。
2.然后从头找前面的字符大于后面的字符,找到后减一
3.比较当前字符是否小于前面的字符,若是,依次减一,知道找到不小于前面字符为止,注意不超过字符串边界。在当前字符后面全部置位为‘9’,转为数字即可。
### 代码

```cpp
class Solution {
public:
    int monotoneIncreasingDigits(int N) {
        //使用贪心法
        string str=to_string(N);
        int len=size(str);
        int n=0;
        for(;n<len-1;n++){
            if(str[n]>str[n+1]){
                str[n]-=1;//当前位置减一,后面全部为9;
                break;
            }}
        while(str[n-1]>str[n]&&n>0){
            str[n-1]-=1;
            n--;
        }
        for(n=n+1;n<len;n++){
            str[n]='9';
        }
        return stoi(str);
    }

    
};
```
posted @ 2020-12-15 14:42  风早&爽子  阅读(83)  评论(0)    收藏  举报