Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาลำดับที่ไม่ซ้ำกันและยาวที่สุดใน JavaScript


เราต้องเขียนฟังก์ชัน 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