★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 }