公司为员工采购设备。orders[]6]表标3个员工的订单、购买的第j件物品、物品由小写英文字母表示(物品只有26种),请你以字符串形式按从a-z的顺序返回所有员工部共同订购的物品。包括重复物品。
示例1
输入:
orders = [“acbabd”,"abadac“,"acaba”]
输出:
"aabc”
解释:
第0个员工购买了a物品2件,b物品2件,c物品1件,d物品1件
第1个员工购买了a物品3件,b物品1件,c物品1件, a物品1件.
第2个员工购买了a物品3件,b物品1件,c物品1件
所有人都订购了2件a物品
所有人都订购了1件百物品所有人都订购了1件c物品
按照字典序从小到大顾序返回, 返回:aabc
示例2:
输入:
orders - [“efdsaac”]
输出:
“aacdefs”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var commonProduct = function(orders){
// 保存结果
let str = ''
if(orders.length==1){
console.log(orders[0])
return
}else{
// 寻找orders中最短的字符串
let [minLen, index] = [orders[0].length, 0]
orders.forEach((element,i) => {
element.length<minLen?[minLen, index] = [element.length, i]:undefined
});
for(var j of orders[index]){ // 遍历最小字符串中的每个字符
// 标识,如果所有字符串中均有这个字符,那就为true
let flag = true
for(var i in orders){ // 将每个字符与其他字符串中进行比较,看是否包含
if(orders[i].indexOf(j)==-1){
// 在order[i]中没有找到期望字符,就改为false
flag=false
}
// 如果标识仍然为true,并且已经将orders中的字符串遍历完毕,那就将当前字符加入str中,
// 并且将所有的字符串中的相应字符删掉
if(flag && i==(orders.length-1)){
str+=j
for(let k in orders){
orders[k] = orders[k].replace(j, '')
}
}
}
}
}
// 最后输出结果
console.log(str)
}
orders = ["acbabd", "abadac", "acabaaaaaa"]
commonProduct(orders)
</script>
</body>
</html>