题目
题解
这道题的思路就是
1.先把数字转换为Char数组
2.从index为0开始找,找到不满足单调递增的第一个数,比如 123245 则找到index=3 若没找到则返回初始数
3.从index往前循环char[index-1]--;index-- 如其前面的数满足单调递增 则结束循环 //保证找到index后,完成char[index-1]-=1,index前面的数仍然满足单调递增,
4.将index+1到最后一个数 置为 9
代码
class Solution {
public static int monotoneIncreasingDigits(int N) {
char[] ans = Integer.toString(N).toCharArray();
int i = 1;
while(i < ans.length && ans[i-1] <= ans[i]){ //此处不能互换&&条件,否则i为ans.length时,i会溢出 &&为短路与,第一个条件为False,第二个不会判断
i++;
}
if (i < ans.length){ //判断是否给定初始数就是单调递增数
while (i > 0 && ans[i] < ans[i-1]){ //不要忘记i>0 否则i==0时,i-1溢出
ans[i-1]--; //此处只能ans[i-1]--或者ans[i-1]-=1 此处包含自动类型转换 若ans[i-1]=ans[i-1]-1则报错,因为有赋值操作,且无自动类型转换
i--;
}
for(i=i+1;i<ans.length;i++){
ans[i] = '9';
}
}
return Integer.parseInt(new String(ans));
}
}