เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริง ฟังก์ชันควรหาลำดับย่อยที่ไม่ซ้ำกันและยาวที่สุดระหว่างสตริงในอาร์เรย์
ด้วย longest uncommon subsequence เราหมายถึงลำดับย่อยที่ยาวที่สุดของสตริงหนึ่งในสตริงเหล่านี้ และลำดับย่อยนี้ไม่ควรเป็นลำดับย่อยของสตริงอื่นๆ
ฟังก์ชันของเราควรคืนค่าความยาวของลำดับย่อยที่ไม่ซ้ำกันและยาวที่สุดนี้
ตัวอย่าง: ถ้าอินพุทอาร์เรย์คือ
const arr = ["aba", "cdc", "eae"];
ผลลัพธ์ควรเป็น 3
ตัวอย่างโค้ด
โค้ดสำหรับการทำงานนี้จะเป็นดังนี้
const arr = ["aba", "cdc", "eae"];
const findUncommonLength = (array = []) => {
const seen = {};
const arr = [];
let max = -1;
let index = -1;
for(let i = 0; i < array.length; i++){
seen[array[i]] = (seen[array[i]] || 0) + 1;
if(seen[array[i]] > 1){
if(max < array[i].length){
max = array[i].length
index = i;
}
}
};
if(index === -1) {
array.forEach(el =>{
if(el.length > max) max = el.length;
})
return max;
};
for(let i = 0; i < array.length; i++){
if(seen[array[i]] === 1) arr.push(array[i]);
};
max = -1;
for(let i = arr.length - 1; i >= 0; i--){
let l = arr[i];
let d = 0;
for(let j = 0; j < array[index].length; j++){
if(array[index][j] === l[d]){
d++;
}
}
if(d === l.length){
let temp = arr[i];
arr[i] = arr[arr.length - 1];
arr[arr.length - 1] = temp;
arr.pop();
}
};
arr.forEach(el =>{
if(el.length > max) max = el.length;
});
return max;
};
console.log(findUncommonLength(arr));ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้
3