# 1002-查找常用字符

给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。

你可以按任意顺序返回答案。

 

示例 1:

输入:["bella","label","roller"]
输出:["e","l","l"]
示例 2:

输入:["cool","lock","cook"]
输出:["c","o"]
 

提示:

1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j] 是小写字母

#

/**
 * @param {string[]} A
 * @return {string[]}
 */
const getCommon = (a, b) => {
  let map = new Map();
  // 遍历 a 字符串,存储字母及其次数
  for (let i = 0; i < a.length; i++) {
    let data = map.get(a[i]);
    if (!data) {
      map.set(a[i], 1);
    } else {
      map.set(a[i], data + 1);
    }
  }
  //公共字符
  const result = [];
  // 遍历 b 字符串,将和 a 相同的取出
  for (let i = 0; i < b.length; i++) {
    const bData = map.get(b[i]);
    if (bData) {
      result.push(b[i]);
      map.set(b[i], bData - 1);
    }
  }
  return result;
};

var commonChars = function (A) {
  return A.reduce((pre, next) => getCommon(pre, next));
};
Last Updated: 12/16/2020, 4:35:02 PM