加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift]LeetCode1160. 拼写单词 | Find Words That Can Be Forme

发布时间:2020-12-14 04:25:57 所属栏目:百科 来源:网络整理
导读:★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ?微信公众号:为敢(WeiGanTechnologies) ?博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/) ?GitHub地址:https://github.com/strengthen/LeetCode ?原文

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

You are given an array of strings?words?and a string?chars.

A string is?good?if?it can be formed by?characters from?chars?(each character?can only be used once).

Return the sum of lengths of all good strings in?words.

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. 1 <= words.length <= 1000
  2. 1 <= words[i].length,chars.length?<= 100
  3. All strings contain lowercase English letters only.

给你一份『词汇表』(字符串数组)?words?和一张『字母表』(字符串)?chars

假如你可以用?chars?中的『字母』(字符)拼写出?words?中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。

注意:每次拼写时,chars?中的每个字母都只能用一次。

返回词汇表?words?中你掌握的所有单词的?长度之和。

示例 1:

输入:words = ["cat",chars = "atach"
输出:6
解释: 
可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。

示例 2:

输入:words = ["hello",chars = "welldonehoneyr"
输出:10
解释:
可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。

提示:

  1. 1 <= words.length <= 1000
  2. 1 <= words[i].length,chars.length?<= 100
  3. 所有字符串中都仅包含小写英文字母

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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读