classSolution { publicintmonotoneIncreasingDigits(int num) { for(inti= num ; i >=0 ; i--){ Stringstr= i + ""; intsize= str.length(); intyi= i % 10; //个位:从右往左数第1个数字,用操作数整除10^(1-1)在对10取余 inter= i / 10 % 10; //十位:从右往左数第2个数字,用操作数整除10^(2-1)在对10取余 intsan= i / 100 % 10; //百位:从右往左数第3个数字,用操作数整除10^(3-1)在对10取余 intsi= i / 1000 % 10; //千位:从右往左数第4个数字,用操作数整除10^(4-1)在对10取余 intwu= i / 10000 % 10; //万位:从右往左数第5个数字,用操作数整除10^(5-1)在对10取余 intliu= i / 100000 % 10; //十万位:从右往左数第6个数字,用操作数整除10^(6-1)在对10取 intqi= i / 1000000 % 10; //十万位:从右往左数第6个数字,用操作数整除10^(6-1)在对10取 intba= i / 10000000 % 10; //十万位:从右往左数第6个数字,用操作数整除10^(6-1)在对10取 intjiu= i / 100000000 % 10; //十万位:从右往左数第6个数字,用操作数整除10^(6-1)在对10取 switch (size){ case1: return i; case2: if(yi >= er){ return i; } break; case3: if(yi >= er && er >= san){ return i; } break; case4: if(yi >= er && er >= san && san >= si){ return i; } break; case5: if(yi >= er && er >= san && san >= si && si >= wu){ return i; } break;
case6: if(yi >= er && er >= san && san >= si && si >= wu && wu >= liu){ return i; } break;
case7: if(yi >= er && er >= san && san >= si && si >= wu && wu >= liu && liu >= qi){ return i; } break; case8: if(yi >= er && er >= san && san >= si && si >= wu && wu >= liu && liu >= qi && qi>= ba){ return i; } break; case9: if(yi >= er && er >= san && san >= si && si >= wu && wu >= liu && liu >= qi && qi>= ba && ba >= jiu){ return i; } break;