为有牺牲多壮志,敢教日月换新天。

[Swift]LeetCode423. 从英文中重建数字 | Reconstruct Original Digits from English

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:为敢(WeiGanTechnologies)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10333942.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

Given a non-empty string containing an out-of-order English representation of digits 0-9, output the digits in ascending order.

Note:

  1. Input contains only lowercase English letters.
  2. Input is guaranteed to be valid and can be transformed to its original digits. That means invalid inputs such as "abc" or "zerone" are not permitted.
  3. Input length is less than 50,000. 

Example 1:

Input: "owoztneoer"

Output: "012" 

Example 2:

Input: "fviefuro"

Output: "45"

给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。

注意:

  1. 输入只包含小写英文字母。
  2. 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。
  3. 输入字符串的长度小于 50,000。

示例 1:

输入: "owoztneoer"

输出: "012" (zeroonetwo)

示例 2:

输入: "fviefuro"

输出: "45" (fourfive)

172ms
 1 class Solution {
 2     func originalDigits(_ s: String) -> String {
 3         var res:String = String()
 4         var counts:[Int] = [Int](repeating:0,count:128)
 5         var nums:[Int] = [Int](repeating:0,count:10)
 6         for char in s.characters        
 7         {
 8             counts[char.ascii] += 1
 9         }
10         nums[0] = counts[122]//z
11         nums[2] = counts[119]//w
12         nums[4] = counts[117]//u
13         nums[6] = counts[120]//x
14         nums[8] = counts[103]//g
15         //o
16         nums[1] = counts[111] - nums[0] - nums[2] - nums[4]
17         //h
18         nums[3] = counts[104] - nums[8]
19         //f
20         nums[5] = counts[102] - nums[4]
21         //s
22         nums[7] = counts[115] - nums[6]
23         //i
24         nums[9] = counts[105] - nums[6] - nums[8] - nums[5]
25         for i in 0..<nums.count
26         {
27             for j in 0..<nums[i]
28             {
29                 res += String(i)
30             }
31         }
32         return res
33     }
34 }
35 
36 extension Character  
37 {  
38   //属性:ASCII整数值(定义小写为整数值)
39    var ascii: Int {
40         get {
41             let s = String(self).unicodeScalars
42             return Int(s[s.startIndex].value)
43         }
44     }
45 }

176ms

 1 class Solution {
 2     func originalDigits(_ s: String) -> String {
 3         var count: [Int] = Array(repeating: 0, count: 10)
 4         let s = Array(s)
 5         for char in s {
 6             if char == "z" { count[0] += 1 }
 7             if char == "w" { count[2] += 1 }
 8             if char == "x" { count[6] += 1 }
 9             if char == "s" { count[7] += 1 }
10             if char == "g" { count[8] += 1 }
11             if char == "u" { count[4] += 1 }
12             if char == "f" { count[5] += 1 }
13             if char == "h" { count[3] += 1 }
14             if char == "i" { count[9] += 1 }
15             if char == "o" { count[1] += 1 }
16         }
17         count[7] -= count[6]
18         count[5] -= count[4]
19         count[3] -= count[8]
20         count[9] = count[9] - count[5] - count[6] - count[8]
21         count[1] = count[1] - count[0] - count[2] - count[4]
22         
23         var res: [String] = []
24         for i in 0 ... 9 {
25             for j in 0 ..< count[i] {
26                 res.append("\(i)")
27             }
28         }
29         return res.joined()
30     }
31 }

504ms

  1 class Solution {
  2     func originalDigits(_ s: String) -> String {
  3     var charDic = [Character:Int]()
  4     var result = ""
  5     for i in s{
  6         if(charDic[i] == nil){
  7             charDic[i] = 1
  8         }else{
  9             charDic[i] = charDic[i]! + 1
 10         }
 11     }
 12     if(charDic["z"] != nil){
 13         let cnt = charDic["z"]!
 14         let str = [Character](repeating: "0", count: cnt)
 15         result.append(String.init(str))
 16         charDic["z"] = charDic["z"]! - cnt
 17         charDic["e"] = charDic["e"]! - cnt
 18         charDic["r"] = charDic["r"]! - cnt
 19         charDic["o"] = charDic["o"]! - cnt
 20     }
 21     if(charDic["w"] != nil){
 22         let cnt = charDic["w"]!
 23         let str = [Character](repeating: "2", count: cnt)
 24         result.append(String.init(str))
 25         charDic["t"] = charDic["t"]! - cnt
 26         charDic["w"] = charDic["w"]! - cnt
 27         charDic["o"] = charDic["o"]! - cnt
 28     }
 29     if(charDic["x"] != nil){
 30         let cnt = charDic["x"]!
 31         let str = [Character](repeating: "6", count: cnt)
 32         result.append(String.init(str))
 33         charDic["s"] = charDic["s"]! - cnt
 34         charDic["i"] = charDic["i"]! - cnt
 35         charDic["x"] = charDic["x"]! - cnt
 36     }
 37     if(charDic["g"] != nil){
 38         let cnt = charDic["g"]!
 39         let str = [Character](repeating: "8", count: cnt)
 40         result.append(String.init(str))
 41         charDic["e"] = charDic["e"]! - cnt
 42         charDic["i"] = charDic["i"]! - cnt
 43         charDic["g"] = charDic["g"]! - cnt
 44         charDic["h"] = charDic["h"]! - cnt
 45         charDic["t"] = charDic["t"]! - cnt
 46     }
 47     if(charDic["u"] != nil){
 48         let cnt = charDic["u"]!
 49         let str = [Character](repeating: "4", count: cnt)
 50         result.append(String.init(str))
 51         charDic["f"] = charDic["f"]! - cnt
 52         charDic["o"] = charDic["o"]! - cnt
 53         charDic["u"] = charDic["u"]! - cnt
 54         charDic["r"] = charDic["r"]! - cnt
 55     }
 56     if(charDic["t"] != nil && charDic["t"]! != 0){
 57         let cnt = charDic["t"]!
 58         let str = [Character](repeating: "3", count: cnt)
 59         result.append(String.init(str))
 60         charDic["t"] = charDic["t"]! - cnt
 61         charDic["h"] = charDic["h"]! - cnt
 62         charDic["r"] = charDic["r"]! - cnt
 63         charDic["e"] = charDic["e"]! - cnt
 64         charDic["e"] = charDic["e"]! - cnt
 65     }
 66     if(charDic["o"] != nil && charDic["o"]! != 0){
 67         let cnt = charDic["o"]!
 68         let str = [Character](repeating: "1", count: cnt)
 69         result.append(String.init(str))
 70         charDic["o"] = charDic["o"]! - cnt
 71         charDic["n"] = charDic["n"]! - cnt
 72         charDic["e"] = charDic["e"]! - cnt
 73     }
 74     if(charDic["f"] != nil && charDic["f"]! != 0){
 75         let cnt = charDic["f"]!
 76         let str = [Character](repeating: "5", count: cnt)
 77         result.append(String.init(str))
 78         charDic["f"] = charDic["f"]! - cnt
 79         charDic["i"] = charDic["i"]! - cnt
 80         charDic["v"] = charDic["v"]! - cnt
 81         charDic["e"] = charDic["e"]! - cnt
 82     }
 83     if(charDic["v"] != nil && charDic["v"]! != 0){
 84         let cnt = charDic["v"]!
 85         let str = [Character](repeating: "7", count: cnt)
 86         result.append(String.init(str))
 87         charDic["s"] = charDic["s"]! - cnt
 88         charDic["e"] = charDic["e"]! - cnt
 89         charDic["v"] = charDic["v"]! - cnt
 90         charDic["e"] = charDic["e"]! - cnt
 91         charDic["n"] = charDic["n"]! - cnt
 92     }
 93     if(charDic["e"] != nil && charDic["e"]! != 0){
 94         let cnt = charDic["e"]!
 95         let str = [Character](repeating: "9", count: cnt)
 96         result.append(String.init(str))
 97         charDic["n"] = charDic["n"]! - cnt
 98         charDic["i"] = charDic["i"]! - cnt
 99         charDic["n"] = charDic["n"]! - cnt
100         charDic["e"] = charDic["e"]! - cnt
101     }
102     return String.init(result.sorted())
103   }
104 }

 

posted @ 2019-01-29 14:30  为敢技术  阅读(195)  评论(0编辑  收藏  举报