curTain

  1. 查找常用字符

1002. 查找常用字符

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

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

示例 1:

输入:[“bella”, “label”, “roller”]
输出:[“e”, “l”, “l”]

示例 2:

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

解题思路一

  1. 取出第一个元素,以第一个元素为基准迭代
  2. 在剩下的元素里面查找迭代的字母
  3. 找到就替换找到的字母,没找到就跳出此次循环
  4. 判断是否是最后一个元素,是就把当前元素存到 res 数组里

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @param {string[]} A
* @return {string[]}
*/
var commonChars = function(A) {
let res = []
for( let item of A[0] ){
for( let i = 1; i < A.length; i ++ ){
let index = A[i].indexOf( item )
if( index === -1 ){
break
} else {
if( i === A.length - 1 ){
res.push( item )
}
A[i] = A[i].replace( item, "" )
}
}
}
return res
};

解题思路二

因为每个元素都必须含有该字母,故可以使用 Array.every() 函数来判定每个元素都存在该字母

解释:

Array.every( cb=()=>{} ) 方法的每一项回调函数都返回 true 的时候,该方法返回 true

实现

1
2
3
4
5
6
7
8
9
10
var commonChars = function(A) {
let res = []
for( let item of A[0] ){
if( A.every( nowItem => nowItem.includes( item ) ) ){
A = A.map( m => m.replace( item, "0" ) )
res.push( item )
}
}
return res
};

 评论