zoukankan      html  css  js  c++  java
  • [Swift]LeetCode423. 从英文中重建数字 | Reconstruct Original Digits from English

    原文地址:https://www.cnblogs.com/strengthen/p/10333942.html 

    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 }
  • 相关阅读:
    Java中如何判断一个字符串是否为数字
    Web发展简史
    常用编程语言
    浏览器运行原理
    [LeetCode]69. x 的平方根(数学,二分)
    [计算机网络]TCP/IP协议-运输层
    [剑指Offer]33-根据后序序列判断是否能组成BST
    [剑指Offer]17-打印从1到最大的n位数(递归)
    [剑指Offer]56-数组中数字出现的次数(位运算)
    [剑指Offer]18-题目一:删除链表的节点 题目二:删除链表中重复节点
  • 原文地址:https://www.cnblogs.com/strengthen/p/10333942.html
Copyright © 2011-2022 走看看