738.单调递增的数字
738. 单调递增的数字 - 力扣(LeetCode)
本题从后往前依次取两位数字处理,如果是递减例如23,那么2变成1,3变成9,但是这里不是直接将3改变,而是记录3的位置,最后再将该位置后面的值全部改为9,这样才能保证整个数字是递增的,比如1000,如果只将第一个0改为9,就会变成900,所以应该将第一个0后所有的数字改为9
class Solution {
public int monotoneIncreasingDigits(int n) {
String s = String.valueOf(n);
char[] chars = s.toCharArray();
int start = s.length(); //记录变为9的起始位置
for (int i = chars.length - 2; i >= 0; i--) {
if (chars[i] > chars[i + 1]) {
chars[i]--;
start = i + 1;
}
}
for (int i = start; i < chars.length; i++) {
chars[i] = '9';
}
return Integer.parseInt(String.valueOf(chars));
}
}