[Swift]LeetCode1160. 拼写单词 | Find Words That Can Be Forme
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ You are given an array of strings? A string is?good?if?it can be formed by?characters from? Return the sum of lengths of all good strings in? Example 1: Input: words = ["cat","bt","hat","tree"],chars = "atach" Output: 6 Explanation: The strings that can be formed are "cat" and "hat" so the answer is 3 + 3 = 6.
Example 2: Input: words = ["hello","world","leetcode"],chars = "welldonehoneyr" Output: 10 Explanation: The strings that can be formed are "hello" and "world" so the answer is 5 + 5 = 10.
Note:
给你一份『词汇表』(字符串数组)? 假如你可以用? 注意:每次拼写时, 返回词汇表? 示例 1: 输入:words = ["cat",chars = "atach" 输出:6 解释: 可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。 示例 2: 输入:words = ["hello",chars = "welldonehoneyr" 输出:10 解释: 可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。 提示:
Runtime:?920 ms
Memory Usage:?21 MB
1 class Solution { 2 func countCharacters(_ words: [String],_ chars: String) -> Int { 3 var A:[Int:Int] = [Int:Int]() 4 let arrChars:[Int] = Array(chars).map{$0.ascii} 5 for c in arrChars 6 { 7 A[c - 97,default:0] += 1 8 } 9 var ret:Int = 0 10 for s in words 11 { 12 var cnt:[Int:Int] = [Int:Int]() 13 let arrS:[Int] = Array(s).map{$0.ascii} 14 for c in arrS 15 { 16 cnt[c - 97,default:0] += 1 17 } 18 var found:Bool = false 19 for k in 0..<26 20 { 21 if cnt[k,default:0] > A[k,default:0] 22 { 23 found = true 24 } 25 } 26 if !found 27 { 28 ret += s.count 29 } 30 } 31 return ret 32 } 33 } 34 35 //Character扩展 36 extension Character 37 { 38 //Character转ASCII整数值(定义小写为整数值) 39 var ascii: Int { 40 get { 41 return Int(self.unicodeScalars.first?.value ?? 0) 42 } 43 } 44 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |