使用贪心的思想,从后往前遍历数字的每一位,如果遇到当前位比后面那一位更大的情况,就把当前位的数-1,然后把后面位的数全部变成9即可。
Integer.parseInt()方法会自动去掉前导0,所以不用担心遇到0的情况怎么办。
public int monotoneIncreasingDigits(int n) {
char[] s=Integer.toString(n).toCharArray();
int ptr=s.length;
for (int i=s.length-2;i>=0;i--){
if (s[i]-'0'>s[i+1]-'0'){
s[i]=(char) (s[i]-'1'+'0');
ptr=i;
}
}
for (int j=ptr+1;j<s.length;j++){
s[j]='9';
}
String res=new String(s);
return Integer.parseInt(res);
}