给定仅有小写字母组成的字符串数组 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[]} */ var commonChars = function(A) { let res = []; let arr1 = A.map(a=>{ return a.split('') }); for(let j=0; j<arr1[0].length; j++){ let a1 = arr1[0][j], count = 0; for(let i=1; i<arr1.length; i++){ let subArr = arr1[i], index = subArr.indexOf(a1); if(index<0){ break; } else { subArr.splice(index, 1) count++; } } if(count === arr1.length-1) { res.push(a1) } } return res; };
复盘:
当时没考虑数组的长度,以为都是3,所有3个循环然后splice;
像这种拿第一个数组的元素分别循环剩下的元素可以用一个计算器count,判断count是否等于除第一个外,剩下数组的个数。