在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a non-negative integer (Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits Example 1: Input: N = 10 Output: 9 Example 2: Input: N = 1234 Output: 1234 Example 3: Input: N = 332 Output: 299 Note: 给定一个非负整数 (当且仅当每个相邻位数上的数字 示例 1: 输入: N = 10 输出: 9 示例 2: 输入: N = 1234 输出: 1234 示例 3: 输入: N = 332 输出: 299 说明: 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 }
|
请发表评论