★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: http://www.javashuo.com/article/p-eaeybcui-me.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given a non-negative integer N
, find the largest number that is less than or equal to N
with monotone increasing digits.git
(Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits x
and y
satisfy x <= y
.) github
Example 1:微信
Input: N = 10 Output: 9
Example 2:less
Input: N = 1234 Output: 1234
Example 3:ide
Input: N = 332 Output: 299
Note: N
is an integer in the range [0, 10^9]
.spa
给定一个非负整数 N
,找出小于或等于 N
的最大的整数,同时这个整数须要知足其各个位数上的数字是单调递增。code
(当且仅当每一个相邻位数上的数字 x
和 y
知足 x <= y
时,咱们称这个整数是单调递增的。)htm
示例 1:blog
输入: N = 10 输出: 9
示例 2:
输入: N = 1234 输出: 1234
示例 3:
输入: N = 332 输出: 299
说明: N
是在 [0, 10^9]
范围内的一个整数。
1 class Solution { 2 func monotoneIncreasingDigits(_ N: Int) -> Int { 3 var str:String = String(N) 4 var arrInt:[Int] = Array(str).map{$0.ascii} 5 var n:Int = str.count 6 var j:Int = n 7 for i in stride(from:n - 1,to:0,by:-1) 8 { 9 if arrInt[i] >= arrInt[i - 1] 10 { 11 continue 12 } 13 arrInt[i - 1] -= 1 14 j = i 15 } 16 for i in j..<n 17 { 18 arrInt[i] = 57 19 } 20 var arrChar:[Character] = arrInt.map{$0.ASCII} 21 return Int(String(arrChar)) ?? 0 22 } 23 } 24 25 //Character扩展 26 extension Character 27 { 28 //Character转ASCII整数值(定义小写为整数值) 29 var ascii: Int { 30 get { 31 return Int(self.unicodeScalars.first?.value ?? 0) 32 } 33 } 34 } 35 36 //Int扩展 37 extension Int 38 { 39 //Int转Character,ASCII值(定义大写为字符值) 40 var ASCII:Character 41 { 42 get {return Character(UnicodeScalar(self)!)} 43 } 44 }