保证数字单调递增,就需要保证从个位数起依次递减,若十位和个位不符合递减规则,则十位将减一,个位将置为9.大致思路就是如此。但是有几个细节还需注意。
这里是数字,怎么比较好的对其各个位进行处理呢?这里是通过将数字转为字符串,然后将字符串转为字符数组来进行遍历比较。最后将字符数组转为字符串再转为数字返回。
然后这里是设置一个标志位来记录要置9的区间。因为如果不符合规则才置9的话,遇到1000这种特殊情况结果就是900,不符合条件,所以需要一个标志位来记录一个区间。
- class Solution {
- public int monotoneIncreasingDigits(int n) {
- String str=Integer.toString(n);
- char[] arr=str.toCharArray();
- int flag=arr.length;
- for(int i=arr.length-1;i>0;i--){
- if(arr[i-1]>arr[i]){
- arr[i-1]--;
- flag=i;
- }
- }
-