题目很长读题花了很长时间。
大概意思就是:
I,R两个数组,将数组R排序然后去重,然后在I数组中找包含R[i]的数。0<=i<=R.length
如果I有包含R[i]的数
1.输出R[i]
2.输出包含R[i]的个数
3.输出包含R[i]数的I数组的索引
4.输出包含R[i]数的I数组的值
5.统计以上个数
// 从R依次中取出R<i>,对I进行处理,找到满足条件的I:
// I整数对应的数字需要连续包含R<i>对应的数字。比如R<i>为23,I为231,那么I包含了R<i>,条件满足
let line
let arr = []
while(line = readline()){
arr.push(line)
if(arr.length == 2){
let listI = arr[0].split(' ').map(i=>parseInt(i));
listI.splice(0,1)
let listR = arr[1].split(' ').map(i=>parseInt(i));
listR.splice(0,1)
listR = listR.reduce((list,item)=>{
if(!list.includes(item)){
let index = list.findIndex(i=>item<i);
index > -1 ? list.splice(index,0,item) : list.push(item)
}
return list
},[]);
let res = []
listR.forEach((r,rIndex)=>{
let temp = []
let hasAdd = false
let result = []
// (1)先输出R<i>
listI.forEach((i,iIndex)=>{
if(i.toString().includes(r.toString())){
if(!hasAdd){
temp.push(r);
hasAdd = true
}
// (3)然后输出满足条件的I在I序列中的位置索引(从0开始);
// (4)最后再输出I。
result.push(iIndex)
result.push(i)
}
});
// 2)再输出满足条件的I的个数
if(hasAdd){
temp.push(result.length / 2);
temp = temp.concat(result)
res = res.concat(temp)
}
})
res.unshift(res.length)
console.log(res.join(' '))
arr = []
}
}