#1160. Find Words That Can Be Formed by Characters
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.
这道题的意思是,找出数组words中符合条件的单词,使得单词的每个字母都来源于chars, 且chars中的每个字母只能用一次。这个题因为题没读清楚导致我写错了好几遍…
首先创建一个map用来记录chars中的字母以及对应的个数。然后再创建一个map用来记录words数组中每个单词的字母以及对应的个数。然后将这两个map进行比较就可以了。
/**
* @param {string[]} words
* @param {string} chars
* @return {number}
*/
var countCharacters = function(words, chars) {
var map={};
var flag=0;
var result=0;
for(var i=0;i<chars.length;i++) {
if(map[chars[i]]) {
map[chars[i]]++;
}
else {
map[chars[i]]=1;
}
}
var wordsMap={}
for(var j=0;j<words.length;j++) {
wordsMap={};
for(var k=0;k<words[j].length;k++) {
if(wordsMap[words[j][k]]) {
wordsMap[words[j][k]]++;
}
else {
wordsMap[words[j][k]]=1;
}
}
console.log(wordsMap)
for(let key in wordsMap) {
if(!map[key] || wordsMap[key]>map[key]) {
flag=1;
}
}
if(flag===0) {
result=result+words[j].length;
}
flag=0;
}
return result;
};