题目
Given a non-negative integer N, find the largest number that is less than or equal to N with monotone increasing digits.
(Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits x and y satisfy x <= y.)
Example 1:
Input: N = 10
Output: 9
Example 2:
Input: N = 1234
Output: 1234
Example 3:
Input: N = 332
Output: 299
Note: N is an integer in the range [0, 10^9].来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/monotone-increasing-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
运行时间
代码
思想:当每次发现当前的数比后面的大时,就把当前的数减去1,后面的数全置零。
class Solution { public int monotoneIncreasingDigits(int N) { if(N<=9) return N; String string=Integer.toString(N); int length=string.length(); int flag=1; StringBuilder stringBuilder=new StringBuilder(string); while(flag==1) { flag=0;//当一次前面的数都不大于后面的数时,跳出循环 for(int i=0;i<length-1;i++) { if(stringBuilder.charAt(i)>stringBuilder.charAt(i+1)) { flag=1; char ci=stringBuilder.charAt(i); ci--;//当前的数减去一 stringBuilder.setCharAt(i, ci); for(int j=i+1;j<length;j++)//后面的数全置零 stringBuilder.setCharAt(j, '9'); break; } } } return Integer.parseInt(stringBuilder.toString()); } }