[Swift]LeetCode738. 單調遞增的數字 | Monotone Increasing Digits

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 Nwith 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] 範圍內的一個整數。


Runtime: 8 ms
Memory Usage: 19 MB
 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 }
相關文章
相關標籤/搜索